在 C# WebAPI 中,您可以使用 Stream 流式传输功能逐字返回数据。以下是一个简单的示例,演示如何从 WebAPI 控制器返回文件内容:

public HttpResponseMessage GetFile()
{
    var filePath = 'C:\path\to\file.txt';
    var response = new HttpResponseMessage();
    response.Content = new PushStreamContent((outputStream, httpContent, transportContext) =>
    {
        using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        {
            byte[] buffer = new byte[4096];
            int bytesRead;
            while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
            {
                outputStream.Write(buffer, 0, bytesRead);
                outputStream.Flush();
            }
        }
        outputStream.Close();
    });
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue('attachment');
    response.Content.Headers.ContentDisposition.FileName = 'file.txt';
    response.Content.Headers.ContentType = new MediaTypeHeaderValue('application/octet-stream');
    return response;
}

在这个示例中,我们首先指定要返回的文件路径。然后,我们创建一个 HttpResponseMessage 对象,并将其 Content 属性设置为 PushStreamContent 对象。PushStreamContent 对象接受一个委托,该委托将在返回响应时被调用。在委托中,我们打开文件流并使用 while 循环逐字读取数据并将其写入输出流。最后,我们设置 ContentDispositionContentType 标头,以指示浏览器下载文件并将其保存为 'file.txt'。

请注意,这个示例非常简单,并且没有处理错误或异常。在实际应用中,您需要添加适当的错误处理逻辑以确保安全和可靠的应用程序。

通过使用 PushStreamContent,您可以高效地逐字返回大文件内容,而无需将整个文件加载到内存中。这可以有效地提高 WebAPI 应用程序的性能。

C# WebAPI 流式传输:逐字返回文件内容

原文地址: https://www.cveoy.top/t/topic/mp3G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录