C# FileStreamResult上的ASP.NET核心响应头
我正在从Azure Blob存储下载.mp4文件,并将其推送到UI。下载效果很好,问题是标题的内容长度设置不正确。因此,您无法跟踪下载时间,因为浏览器只显示已下载的内容,而不显示剩余的内容和估计时间。我的响应代码是错误的还是应该更改请求?我的代码如下:C# FileStreamResult上的ASP.NET核心响应头,c#,asp.net-core,C#,Asp.net Core,我正在从Azure Blob存储下载.mp4文件,并将其推送到UI。下载效果很好,问题是标题的内容长度设置不正确。因此,您无法跟踪下载时间,因为浏览器只显示已下载的内容,而不显示剩余的内容和估计时间。我的响应代码是错误的还是应该更改请求?我的代码如下: [HttpGet("VideoFileDownload")] public IActionResult VideoFileDownloadAsync([FromQuery]int VideoId) { ...code to get bl
[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 core中的新功能,这些功能无法按预期工作,或者可能我只是不完全理解。有人能给我一个使用asp.net核心代码下载的文件的工作示例吗。如果您有文件大小,您可以在返回FileStreamResult之前在响应对象中设置响应的内容长度,如下所示:
[HttpGet("VideoFileDownload")]
public IActionResult VideoFileDownloadAsync([FromQuery]int VideoId)
{
...code to get blob file
long myFileSize = blob.Length; // Or wherever it is you can get your file size from.
this.Response.ContentLength = myFileSize;
return new FileStreamResult(blob.OpenRead(), new MediaTypeHeaderValue("application/octet-stream")
}