我正在尝试创建一个返回大文件400+ mb的API控制器操作。 现在我正在使用FileStreamResult作为IActionResult,这对于大约900mb的大文件来说非常慢,但是对4gb左右的文件起作用。
[HttpGet("{fileId}")]
public async Task<IActionResult> DownloadFile(Guid fileId)
{
var fileResponse = await _bus.RequestAsync<FileRequest, FileResponse>(new FileRequest(fileId));
var file = new FileInfo(@"c:\users\peter\desktop\save\" + fileId.ToString());
return new FileStreamResult(file.OpenRead(), fileResponse.ContentType)
{
FileDownloadName = fileResponse.Filename
};
}
如果我首先将文件复制到内存流,它会快得多,但后来我受到了限制,它在4gb文件中失败了。
[HttpGet("{fileId}")]
public async Task<IActionResult> DownloadFile(Guid fileId)
{
var fileResponse = await _bus.RequestAsync<FileRequest, FileResponse>(new FileRequest(fileId));
var file = new FileInfo(@"c:\users\peter\desktop\save\" + fileId.ToString());
var ms = new MemoryStream();
file.OpenRead().CopyTo(ms);
return new FileStreamResult(ms, fileResponse.ContentType)
{
FileDownloadName = fileResponse.Filename
};
}
如何通过MVC Api快速返回大文件?