我遇到了类似的问题:Allowing users to download files - ASP.NET,但在我的情况下,我使用ajax生成xlsx文件,并在我正在使用的ajax-aspx页面上生成:
Response.Clear();
Response.ContentType = "application/octet-stream";
string filename = User.Identity.Name + "_Report.xlsx";
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
Response.WriteFile(AppDomain.CurrentDomain.BaseDirectory + "Reports\\" + filename);
Response.End();
当生成此文件时,控制权返回到ajax调用页面,并且从那里我不想显示基于此ajax响应的保存文件对话框并允许用户下载此生成的文件。我不想用ajax调用页面将文件保存在磁盘上,然后将ajax调用页面重定向到该文件,因为IE中有弹出窗口阻止程序。我正在使用jquery进行ajax调用:
$.ajax({
type:"POST",
url: "AjaxReport.aspx",
data:dataString,
success: function(data) {
//don't want to use this
// $('#RedirectIFrame').attr('src','Reports/Report.xlsx?cache='+Math.random());
//want to use data variable containing ajax response (bytes of Report file) showing
//save dialog to download this file from browser
}
});
怎么做?
答案 0 :(得分:0)
目前,JavaScript无法访问用户的文件系统,这意味着您无法提示用户保存来自网络流的文件。
换句话说。您需要重定向并将文件流写入HTTP响应,并让用户决定该做什么:)