簡體   English   中英

c#asp.net MVC通過Ajax下載文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM