我正在尝试将文件写入响应以供下载。我用:
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
如果直接链接到所有文件下载都很好,但出于安全原因我不能这样做。我不希望制作文件的临时副本并链接到这些副本,但如果我找不到将它们写入响应的方法,我将不得不这样做。