У меня очень похожая проблема: Разрешение пользователям загружать файлы - ASP.NET , но в моем случае я создаю файл xlsx с помощью ajax, и на странице aspx, называемой ajax, использую:
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
}
});
Как это сделать?