我通过 .aspx 页面下载文件并返回一个文件
HttpContext.Current.Response.ContentType = "APPLICATION/OCTET-STREAM";
String Header = "Attachment; Filename=" + sFileName;
HttpContext.Current.Response.AppendHeader("Content-Disposition", Header);
FileInfo Dfile = new FileInfo(HttpContext.Current.Server.MapPath(sFilePath));
HttpContext.Current.Response.WriteFile(Dfile.FullName);
HttpContext.Current.Response.End();
没关系。
我希望能够使用 jQuery 通过异步 ajax 调用来完成此操作,以便在下载文件时用户可以看到 gif 旋转动画。
$("#showbusy").fadeIn();
$.ajax({ async : true, type: "GET", url: "download.aspx",
contentType: "application/text; charset=utf-8",
success: function (data) {
$("#showbusy").hide();
},
error: function (xmlHttpRequest, textStatus, errorThrown) {
$("#showbusy").hide();
}
});
如果我直接进入 .aspx 页面,则会下载文件,但由于某种原因对此页面进行 ajax 调用,这不起作用。我可以看到数据正在 Firebug 中返回,但一旦完成下载,它就位于内存中。
收到文件下载数据后,如何实际触发浏览器端的保存文件对话框?
必须通过保存对话框启动下载,以便用户能够将其放入磁盘上。
如果您的方法是预取文件,然后向用户显示一个保存对话框以将文件放在磁盘上的某个位置,则这无法通过 javascript 实现。
然而,你may能够通过 ajax 调用下载文件(您现在正在做的事情),在发送内容时提供响应缓存标头,然后弹出下载对话框(例如通过 iframe ) 获取与 AJAX 调用中完全相同的 URL。这将使浏览器将文件从其缓存(AJAX 调用完成时创建)保存到用户磁盘。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)