我有一位朋友在测试我的网站时遇到问题,该网站为报告提供CSV导出。他说CSV输出到屏幕,没有创建文件。
它在我的IIS7,Vista和IE7设置上运行良好。我目前无法获得更多详细信息,但我想至少问一下:我的代码是否在下面,因为发送CSV足以与浏览器/版本无关?
Response.Clear();
Response.Buffer = true;
Response.ContentType = "text/csv";
string fileName = GetExportFileName();
Response.AddHeader("Content-Disposition", "filename=" + fileName);
dt.WriteCsv(Response.Output, false);
Response.End();
我正在构建fileName以包含/
分隔符的日期,这可能会导致问题,但它不会影响我的计算机,/
会自动替换为{{1} }}
答案 0 :(得分:1)
我也用过
Response.AddHeader("content-disposition", "attachment;filename=FileName.csv");
添加“附件”文本。您可以试着看看它对您的朋友是否有任何影响。
答案 1 :(得分:1)
IE6中存在一个已知问题,它没有正确支持内容处理元标记,并且在如何编写各种元标记方面存在一些问题。
This link from Scott Hanselman details everything about the issue.
此致 马西莫
答案 2 :(得分:1)
非常晚到这个派对,所以对于后来遇到这个问题的人来说更是如此。这与引用“没有HTTP标头将迫使IE6提供下载。”
在PHP中,我将IE设置为以下标题,以显示“保存”按钮,而不仅仅是下载文件 - 或者在浏览器窗口中显示文件。
Response.AddHeader("X-Download-Options", "noopen");
Response.AddHeader("X-Content-Type-Options", "nosniff");
X标头用于表示它是非标准标头类型。适用于IE6。
答案 3 :(得分:0)
让IE提示下载的唯一确定方法是压缩CSV文件(即file.csv.zip或file.zip)。
见
没有HTTP标头会强制IE6提供下载。对于由IE“自动检测”的文本内容尤其如此。
您可以尝试使用Content-Disposition附件; filename = file.csv但我不确定它会一直有效。如果有,请确认。
答案 4 :(得分:0)
您没有提到您的朋友正在使用的浏览器。最后,它可能是一个错误或非标准的行为。
以下技术似乎对我有用:http://www.blackbeltcoder.com/Articles/asp/creating-downloadable-content-dynamically。