1

我正在尝试编写下载位于服务器上的文件的代码。但另存为对话框不会在 IE 中打开。

我试过response.redirect,我试过了

 Response.Clear();
 Response.ContentType = "text/csv"; 
 Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameDisplay); 
 Response.WriteFile(Server.MapPath(pathName + fileNameUnique)); 
 Response.Flush(); 
 Response.End(); 

一切都适用于 firefox 和 chrome ,但不适用于 Internet Explorer。我知道在安全性--->自定义级别--->下载--->自动提示文件下载中有一个安全选项,它始终处于禁用模式,我需要将其切换为启用才能使用工作,但我不会让我的用户处理这个问题。我如何克服这个“安全问题”?

有没有正确的方法来处理下载文件?什么是正确的代码?

谢谢你,加迪姆

4

4 回答 4

0

您需要明确告诉它不是打开的内容,添加以下标题:

Response.AppendHeader("Content-Disposition", "attachment; filename=" + fname);
Response.AppendHeader("Content-Transfer-Encoding", "binary");

此外,强烈建议设置显式文件长度

Response.AppendHeader("Content-Length", responseContentLength.ToString());
于 2010-07-25T10:22:03.737 回答
0
var info = new FileInfo(path);

Response.Clear();

Response.AppendHeader("Content-Disposition", String.Concat("attachment; filename=", info.Name));
Response.AppendHeader("Content-Length", info.Length.ToString(System.Globalization.CultureInfo.InvariantCulture));
Response.AppendHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "text/csv";

Response.WriteFile(info.FullName, true);
Response.End();
于 2010-07-25T10:24:57.583 回答
0

当我使用以下文件下载链接时,我遇到了同样的问题:

<a href="DownloadFile.aspx">
    <input type="image" src="~/virtual/path/to/image.png" runat="server" />
</a>

当我将其更改为:

<a href="DownloadFile.aspx">
    <img src="~/virtual/path/to/image.png" runat="server" />
</a>
于 2011-02-21T20:11:33.907 回答
0

abatishchev,谢谢你帮助我。我找到了解决我的问题的方法。

我创建了一个对话框窗口(我们称之为“DownloadWindow”),其中包含一个空的“A HREF”标签。(它的节目 - '点击这里下载')

在我单击默认页面(动态创建我的文件)上的下载(EXCEL/CSV 图标)按钮后,我加载对话框窗口('DownloadWindow'),然后我将'a href'链接替换为文件 url我之前创建的,所以我的用户可以从我的服务器下载它。

现在,Internet Explorer 确实弹出了打开/保存/取消对话框。

这有点烦人,但它解决了我的问题。

于 2010-07-26T13:18:17.243 回答