Генерируете файл с помощью ajax и позволяете пользователю скачать его? - PullRequest
0 голосов
/ 16 ноября 2010

У меня очень похожая проблема: Разрешение пользователям загружать файлы - 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
    }              
});   

Как это сделать?

1 Ответ

0 голосов
/ 16 ноября 2010

В настоящее время JavaScript не может получить доступ к файловой системе пользователя, то есть вы не можете предлагать пользователям сохранить файл, поступающий из сетевого потока.

Другими словами.Вам нужно будет сделать это перенаправить и записать поток файлов в ответ HTTP, и позволить пользователю решать, что делать:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...