从服务器下载文件的最佳方法是什么?

时间:2012-06-06 10:09:44

标签: javascript asp.net wcf

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

从服务器下载文件的最佳方法是什么?我应该使用WCF服务,例如here描述的内容还是this one之类的简单页面?

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

1 个答案:

答案 0 :(得分:20)

首先,您可以从处理程序.ashx

创建文件

假设您有download.ashx下载的文件,并且您有一些参数可以从您的javascript传递,例如download.ashx?p1=8827&p2=8831以了解您要创建的内容。

然后在你的javascript上,你可以简单地重定向

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

或替代方案,你可以使用window.open做同样的想法

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

,您的文件将开始下载。

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

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

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

你也可以对这个答案感兴趣:How to handle errors