【问题标题】:Download file / Save as in .Net not working下载文件/另存为.Net不工作
【发布时间】:2011-06-03 02:41:20
【问题描述】:

我有一个基于 jquery 灯箱的屏幕,我想在单击链接按钮时下载文件,但是没有出现允许我保存的弹出框...我在下面得到的简单测试代码有效如果把它放在表单加载中,但如果我把它放在超链接的服务器端点击事件中。任何想法为什么?

Response.ContentType = "text/plain";

Response.AppendHeader("Content-Disposition", "attachment; filename=event.txt");
Response.Write("test");
Response.Flush();
Response.End();

通过firebug查看,响应标头如下,但实际响应只是页面重新加载时的html。

Response Headers
Cache-Control   private
Transfer-Encoding   chunked
Content-Type    text/plain; charset=utf-8
Server  Microsoft-IIS/7.5
X-AspNet-Version    2.0.50727
Content-Disposition attachment; filename=event.txt
X-Powered-By    ASP.NET
Date    Fri, 03 Jun 2011 03:21:25 GMT

【问题讨论】:

  • 您是否在后面的代码中将超链接的OnClick 属性设置为您的下载事件处理程序?或者,您可以使用ashx file handler,如下所示:stackoverflow.com/questions/1703066/…
  • OnClick 属性已链接起来,它包含执行的代码......我将研究 ashx 处理程序。我不熟悉他们...

标签: asp.net http download mime-types content-disposition


【解决方案1】:

这是我尝试的一个实验:

标记:

<p>
    <a href="#" runat="server" ID="lnkDownload" Text="Download Text" onServerClick="DownloadFile">Download</a>
</p>

后面的代码:

protected void Page_Load(object sender, EventArgs e) {

}

protected void DownloadFile(object sender, EventArgs eventArgs) { Response.ContentType = "文本/纯文本";

Response.AppendHeader("Content-Disposition", "attachment; filename=event.txt");
Response.Write("test");
Response.Flush();
Response.End();

}

唯一不同的是我使用了 OnServerClick 而不是 OnClick。

这适用于 Firefox 3.6 和 IE9。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多