gpt4 book ai didi

c# - ASP.NET Web API StreamContent - 让浏览器显示下载进度

转载 作者:行者123 更新时间:2023-11-30 12:27:39 26 4
gpt4 key购买 nike

我在 ASP.NET Web Api 2.x Controller 中使用 StreamContent 的实例提供文件服务类型。请求文件时,其 blob 位于数据库中,并打开 blob 流。然后将 blob 流用作 StreamContent 实例的输入。

归结起来,我的 Controller 操作看起来类似于:

[HttpGet]
[Route("{blobId}")]
public HttpResponseMessage DownloadBlob(int blobId)
{
// ... find the blob in DB and open the 'myBlobStream' based on the given id

var result = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StreamContent(myBlobStream)
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentLength = myBlobStream.Length;
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "foo.txt",
Size = myBlobStream.Length
};
return result;
}

当我在 Chrome (v. 35) 中点击端点时,它说它正在解析主机 (localhost),当文件下载完成后,它会出现在下载栏中。但是,我想知道需要什么才能让 Chrome(或任何其他浏览器)显示下载进度?

我认为这可以通过包含标题信息(如内容类型、内容长度和内容处置)来解决,但根据我的尝试,这没有任何区别。

最佳答案

结果证明我的实现是正确的。我关闭了 fiddler ,一切都按预期进行。不知道 fiddler 是否以某种方式等待整个响应完成,然后再通过其代理发送响应 - 至少,这可以解释为什么浏览器在下载整个文件之前保持“解析主机”状态。

关于c# - ASP.NET Web API StreamContent - 让浏览器显示下载进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com