在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 著作权归作者所有。请勿转载和采集!

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