c# webapi stream流逐字返回
在C# WebAPI中,可以使用Stream流逐字返回数据。以下是一个简单的示例:
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循环逐字读取数据并将其写入输出流。最后,我们设置ContentDisposition和ContentType标头,以指示浏览器下载文件并将其保存为文件.txt。
请注意,这个示例非常简单,并且没有处理错误或异常。在实际应用中,您需要添加适当的错误处理逻辑以确保安全和可靠的应用程序。
原文地址: https://www.cveoy.top/t/topic/3JW 著作权归作者所有。请勿转载和采集!