我有一个有趣的任务,要求我将服务器(ASP.NET)的动态生成文件下载到客户端。在客户端,它只是JavaScript(jQuery),并且客户端能够生成很多参数来定制数据的导出方式。 我不知道如何在不重新加载页面的情况下下载文件(我不确定$.ajax在这种情况下是否可以工作)。有人可以给我一些关于这个话题的指导吗?谢谢。
首先,您可以从处理程序创建文件 .ashx
.ashx
假设您有要下载的文件,download.ashx并且有一些参数可以通过JavaScript传递,例如download.ashx?p1=8827&p2=8831,知道要创建什么。
download.ashx
download.ashx?p1=8827&p2=8831
然后在您的JavaScript上,您可以简单地将重定向为
window.location = "download.ashx?p1=8827&p2=8831";
或替代方案,您可以使用window.open进行相同的思考
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);
简单明了,经过测试和工作。