下载带有响应的文件时没有显示文件大小

本文关键字:显示 文件大小 响应 下载 文件 | 更新日期: 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;