無理だとは思いますが、質問させていただきます...
ファイルをFileResult
返す がありますが、動作する場合は問題ありません。何らかの理由でエラーが発生したFileResult
場合、例外エラー メッセージをユーザー画面、できればポップアップで表示したいと考えています。
成功した場合はファイルを返し、失敗した場合はメッセージを表示する Ajax 投稿を行うことはできますか?
無理だとは思いますが、質問させていただきます...
ファイルをFileResult
返す がありますが、動作する場合は問題ありません。何らかの理由でエラーが発生したFileResult
場合、例外エラー メッセージをユーザー画面、できればポップアップで表示したいと考えています。
成功した場合はファイルを返し、失敗した場合はメッセージを表示する Ajax 投稿を行うことはできますか?
ajax ポストを処理するためには考えられる原因ではないと思います。クライアント側で javascript ハンドラーを作成する必要があり、javascript はクライアント側でファイル IO を実行できません。
ただし、できることは、ファイルが存在し、ダウンロードできるかどうかを確認する ajax リクエストを作成することです。そうでない場合は、その要求に否定的に応答し、クライアント側でダイアログをポップアップします。成功した場合は、ファイルのダウンロード要求を行います。
特にMVCとは関係ありませんが...
バイナリ データ (この場合は http 応答から取得) を処理し、それをローカル ファイル システムに保存できるXMLHttpRequest
新しい HTML5 と組み合わせて使用できます。File System API
ここで例を参照してください: 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);
});