5

我在所有浏览器中都遇到了很大的问题。

我有一个网站,客户可以在其中下载包含他们需要的详细信息的 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 上运行。

有人知道是什么原因造成的吗?

4

2 回答 2

2

假设您的逐字字符串文字在源代码中的单行上,您是否尝试将,标题Content-Disposition中的 替换为;? 我发现的例子总是在那里使用分号。

在文件名周围使用引号来保护标题免受特殊字符的影响也可能更安全:

context.Response.AppendHeader(
    "Content-Disposition",
    string.Format(
        "attachment; filename=\"{0}\"",
        Path.GetFileName(downloadFilePath)));
于 2012-06-19T14:08:25.247 回答
0

好的,我已经弄清楚为什么文件没有以 CSV 格式下载。

这是因为文件名中有空格,所以我需要将文件名括起来,这样它就不会在空格处被截断。

谢谢你的帮助

于 2012-06-20T14:01:30.220 回答