我在所有浏览器中都遇到了很大的问题。
我有一个网站,客户可以下载包含所需详细信息的csv文件。
我遇到的问题是csv文件无法下载或作为htm文件下载。
在我用.csv指定文件名的代码中,服务器上的文件也是.csv。
代码如下
context.Response.Buffer = true;
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ContentType = "text/csv";
context.Response.AppendHeader("Content-Disposition", @"attachment,
filename=" + ((string)Path.GetFileName(downloadFilePath)));
context.Response.WriteFile(downloadFilePath);
context.Response.Flush();
context.Response.Close();
我尝试了context.Response.ContentType = "text/html";
和context.Response.ContentType = "application/octet-stream";
。
它在IIS6上运行。
有人知道造成这种情况的原因吗?
答案 0 :(得分:2)
假设您的verbatim string literal在您的来源的单行上,您是否尝试使用,
替换Content-Disposition
标题中的;
?我发现的例子总是在那里使用分号。
使用文件名周围的引号来保护标题不受特殊字符的影响可能更安全:
context.Response.AppendHeader(
"Content-Disposition",
string.Format(
"attachment; filename=\"{0}\"",
Path.GetFileName(downloadFilePath)));
答案 1 :(得分:0)
好的,我已经找出了为什么文件没有以CSV格式下载。
因为文件名中有空格,所以我需要将文件名括起来,以免在空格处切断。
感谢您的帮助