首页 > 解决方案 > 如何立即将 ASP.NET MVC 中的大文件作为 FileStreamResult 返回,而无需等待它在服务器端完全下载?

问题描述

我正在尝试获取大小为 100MB 的文件并返回流结果。我必须等待“另存为...”窗口大约 1 分钟,直到它在服务器端完全下载,然后在选择文件名并接受后 - 它非常快速地保存而没有显示进度。但是当我从文件系统返回一个文件作为 FilePathResult 时,它工作得很好。

例子:

public async Task<FileResult> GetFile()
{
    HttpClient client = new HttpClient();
    var response = await client.GetAsync("https://speed.hetzner.de/1GB.bin");
    var stream = await response.Content.ReadAsStreamAsync();

    return File(stream, "application/zip");
}

我应该怎么做才能立即显示“另存为...”窗口,然后查看实际下载了多少字节?

标签: asp.netfilemodel-view-controllerstream

解决方案


请参阅此问题以获取解决方案:C# Stream Response from 3rd party, minimum buffering


推荐阅读