2010-11-16 108 views
0

我有非常類似的問題,因爲這:Allowing users to download files - 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響應的保存文件對話框,並允許用戶下載這個生成的文件。由於IE中的彈出式窗口攔截器,我不想用稱爲頁面的ajax將文件保存在磁盤上,然後將ajax調用頁面重定向到該文件。我正在使用jQuery的阿賈克斯調用:

$.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

當前JavaScript無法訪問用戶的文件系統,這意味着您不能提示用戶保存來自網絡流的文件。

換句話說。你需要做的是重定向並將你的文件流寫入HTTP響應,並讓用戶決定做什麼:)

相關問題