15

我有一个有趣的任务,需要我从服务器(ASP.NET)下载一个动态生成的文件到客户端。在客户端,它只是 JavaScript (jQuery),客户端能够生成大量参数来自定义数据的导出方式。

从服务器下载文件的最佳方法是什么?我应该使用 WCF 服务,例如这里描述的还是像这样的简单页面?

我不知道如何在不重新加载页面的情况下下载文件(我不确定 $.ajax 在这种情况下是否有效)。有人可以给我一些关于这个话题的方向吗?谢谢。

4

1 回答 1

20

首先,您可以从处理程序创建文件.ashx

假设您有要下载的文件,download.ashx并且您有一些参数要从您的 javascript 传递,例如download.ashx?p1=8827&p2=8831,要知道您要创建什么。

然后在您的 javascript 上,您可以简单地将重定向设置为

window.location = "download.ashx?p1=8827&p2=8831";

或者你可以使用window.openfor 做同样的想法

window.open("download.ashx?p1=8827&p2=8831");

您的文件将开始下载。

只需确保您已设置附件的标题,并在您的句柄上设置正确的内容类型,例如:

  HttpContext.Current.Response.ContentType = "application/octet-stream";
  HttpContext.Current.Response.AddHeader("Content-Disposition", 
                    "attachment; filename=" + SaveAsThisFileName);

简单明了,经过测试和工作。

您也可能对这个答案感兴趣:如何处理错误

于 2012-06-06T11:05:36.207 回答