FileStreamResult上的ASP.NET核心响应头

时间:2017-07-13 15:01:53

标签: c# asp.net-core

我正在从Azure Blob存储中下载.mp4文件并将其推送到UI。下载工作正常,问题是它看起来不像内容长度正确设置标头。因此,您无法跟踪下载时间,因为浏览器仅显示已下载的内容,而不是剩余的内容和估计的时间。我的回复代码是错误的还是我应该更改我的请求?我的代码如下:

[HttpGet("VideoFileDownload")]
public IActionResult VideoFileDownloadAsync([FromQuery]int VideoId)
{
     ...code to get blob file
     return new FileStreamResult(blob.OpenRead(), new MediaTypeHeaderValue("application/octet-stream")
}

我玩过各种请求和响应标题,但没有区别。

文件很大,我知道旧的asp.net检查范围标题的方法,然后做一个分块流,但我想使用.net核心中的新功能,这不能按预期工作或者我只是不彻底明白。有人可以给我一个使用asp.net核心代码下载文件的工作样本。

1 个答案:

答案 0 :(得分:0)

如果你有文件大小,你可以在返回FileStreamResult之前在Response对象中设置响应的内容长度,如下所示:

fixture.detectChanges()