[英]Download Excel file via AJAX MVC without saving the file on server in ASP.Net/C#
[英]c# asp.net MVC Download a file via Ajax
我很確定這是不可能的,但我想我會問......
我有一個FileResult
返回一個文件,當它工作時沒有問題。 當FileResult
由於某種原因出現錯誤時,我想在用戶屏幕上顯示異常錯誤消息,最好是在彈出窗口中顯示。
我可以做一個成功返回文件的Ajax帖子,如果沒有則顯示一條消息嗎?
我認為這是不可能的原因,為了處理ajax帖子,你將不得不在客戶端編寫一個javascript處理程序,javascript無法在客戶端執行文件IO。
但是,您可以做的是,發出一個ajax請求來檢查文件是否存在並且可以下載。 如果,不是,否定地響應該請求將在客戶端彈出對話框。 如果成功,請發出文件下載請求。
與MVC沒有特別關系,但......
它可以使用XMLHttpRequest
結合新的HTML5 File System API
來完成,它允許您處理二進制數據(在您的情況下從http響應中獲取)並將其保存到本地文件系統。
請參見此處的示例: http : //www.html5rocks.com/en/tutorials/file/xhr2/#toc-example-savingimages
控制器(MyApiController)代碼:
public ActionResult DownloadFile(String FileUniqueName)
{
var rootPath = Server.MapPath("~/UploadedFiles");
var fileFullPath = System.IO.Path.Combine(rootPath,FileUniqueName);
byte[] fileBytes = System.IO.File.ReadAllBytes(fileFullPath);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, "MyDownloadFile");
}
Jquery代碼:
$(document).on("click"," a ", function(){ //on click of anchor tag
var funame=$(this).attr('uname'); /*anchor tag attribute "uname" contain file unique name*/
var url = "http://localhost:14211/MyApi/DownloadFile?FileUniqueName= " + funame;
window.open(url);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.