下载带有响应的文件时没有显示文件大小
本文关键字:显示 文件大小 响应 下载 文件 | 更新日期: 2023-09-27 18:16:37
我在一个函数中有这样一段代码:
Response.Clear();
Response.ContentType = "text/xml; charset=utf-8";
Response.AddHeader("Content-Disposition", "attachment; filename=test.xml");
// Put xml into response here
Response.End();
这是有效的,但是,当它,它不显示文件大小,在firefox中,它显示文件大小-1,在chrome和ie中,它根本不显示文件大小。我如何显示文件大小?
你试过给这个吗:
Response.AddHeader("Content-Length", someBytes.Length.ToString());
如果设置了内容长度,web浏览器将在下载时显示进度条。对于大中型文件,这是一个非常重要的可用性特性,您确实需要它。您希望用户知道他们已经下载了多少,这样他们就不会取消下载并重新开始,或者更糟的是放弃您的站点。请参阅
如果您的响应类型是System.Net.Http。HttpResponseMessage,你可以插入一个Content-Length头通过使用:
response.Content.Headers.ContentLength = <length in bytes>;
如果你是流文件,你的代码可能看起来像:
FileStream fileStream = File.Open("<source file name>", FileMode.Open);
HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StreamContent(fileStream);
response.Content.Headers.ContentLength = fileStream.Length;
response.Content.Headers.ContentType =
new MediaTypeHeaderValue("<media type e.g. application/zip>");
response.Content.Headers.ContentDisposition =
new ContentDispositionHeaderValue("file")
{
FileName = "<destination file name>"
};
return response;