c# - 如何将文件写入 Internet Explorer Mobile 的响应?

标签 c# asp.net internet-explorer windows-phone-8 windows-phone

我正在尝试将文件写入响应以供下载。我使用:

      Response.Clear();
      Response.AddHeader("content-disposition", "attachment;filename=" + name);
      Response.ContentType = GetMimeType(path);
      Response.BinaryWrite(File.ReadAllBytes(path).ToArray());
      Response.End();

这在多个桌面浏览器上运行良好。但是,在 Windows Phone 8 设备上的 Internet Explorer Mobile 10 上,它失败了。不出所料,我看到了一个屏幕,上面显示“点击打开”消息。

但是,当我点击消息时,它会导航到一个空白页面,其 url 为“Default[x].htm”。到目前为止,“x”一直是 1、2 和 3。如果我将该页面添加到我的收藏夹,我可以看到 Default[x].html 的完整 URL 是“file://C:\Data\Users\DefApps\AppData\INTERNETEXPLORER\INetCache\WNW0K564\Default[x]。 htm”。

无论文件的扩展名或 MIME 类型是什么,这都是一样的。我很困惑为什么会这样。是否有替代方法将文件写入与 IE Mobile 兼容的响应?

正如我所说,无论文件扩展名或 MIME 类型如何,这都会失败。例如,我验证的情况是:

filename: themes.ppt, MIME Type: application/vnd.ms-powerpoint

如果直接链接,所有文件都可以下载,但出于安全原因我不能这样做。我不想制作文件的临时副本并链接到这些副本,但如果我找不到将它们写入响应的方法,我将不得不这样做。

最佳答案

我弄清楚是什么导致了这个问题。为了到达我正在向客户端写入文件的页面,我使用了

Response.Redirect("downloadfile.aspx?" + ...);

出于某种原因,这导致了 Windows Phone 设备上的问题。我更改了它,以便在客户端完成页面更改。这解决了这个问题。您可能可以使用 javascript 来执行此操作:

location.href = "downloadfile.aspx?" + ...;

但我最终只是使用链接直接链接到我的下载页面 (downloadfile.aspx)

关于c# - 如何将文件写入 Internet Explorer Mobile 的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457862/

相关文章:

c# - 如何在给定状态下停止 foreach 循环

c# - ICollectionView 的过滤问题

c# - 确认消息不提示

c# - ASP.Net 从文本框插入数据到数据库

c# - 如何编写 Azure 中 CloudService 实例的预热脚本?

c# - 不为 double 使用默认值

asp.net - "Can' t 在 Visual Web Developer Publish 上找到有效的 AspnetMergePath”?

javascript - IE11,无法获取函数的参数

c# - 用于控制选项卡的 Internet Explorer 7+ 插件

internet-explorer - 导致 IE 问题的 HTTP header ?