【发布时间】:2014-07-17 13:45:44
【问题描述】:
我正在创建一个 ASP.Net Web 应用程序,我想添加一个导出功能。当单击按钮时,该功能将生成一个字符串(具体来说是 xml)。
我想让用户把这个字符串下载为一个文件。
我是否需要在服务器的硬盘上创建一个文件并打开一个指向该文件的链接,还是有办法直接下载该字符串(以便 ASP.net 负责创建和删除该文件)?
我目前正在尝试执行以下操作:
Response.Clear();
Response.Buffer = true;
Response.ContentEncoding = Encoding.GetEncoding(1252);
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=filename.txls");
//Multiple Response.Write(string) calls to add content to the file
Response.End();
使用萤火虫,我发现用户收到标题,但文件没有打开。
Internet Explorer 甚至可以向我显示响应文本并有一个保存文件的按钮(这两个选项仅在开发人员工具中可用)并且文件是正确的,但仍然无法打开文件一个窗口(也不是浏览器内预览)。
当我使用 Internet Explorer(似乎有更好的 Visual Studio 调试集成)时,出现 JavaScript 错误:
The EnableScriptGlobalization property cannot be changed during async postbacks or after the Init event.
调用 Response.Write() 似乎是此问题的常见原因。当然,我多次调用该方法。
我发现网页上的 JavaScript(脚本似乎是自动生成的)试图解析响应,但它当然不是以 asp.NET 内部通信格式格式化,而是以我自己的 XML格式。
如何告诉页面将我的页面视为可下载文件?
【问题讨论】:
-
那太棒了。你试过什么?他们从什么上下文下载它? Web 表单页面? MVC 网站?网络API?您需要具体说明您的要求,提供一个显示下载位置的代码示例可能会有所帮助。
-
感谢您指出这一点,梅森。我在帖子中添加了必要的细节。当然,如果有什么遗漏,我很乐意提供。