Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#asp.net MVC通过Ajax下载文件_C#_Ajax_Asp.net Mvc - Fatal编程技术网

c#asp.net MVC通过Ajax下载文件

c#asp.net MVC通过Ajax下载文件,c#,ajax,asp.net-mvc,C#,Ajax,Asp.net Mvc,我很确定这是不可能的,但我想我会问 我有一个FileResult,它返回一个文件,当它工作时没有问题。当由于某种原因,FileResult中出现错误时,我希望在用户屏幕上显示异常错误消息,最好是在弹出窗口中 我可以做一个Ajax post,成功时返回一个文件,如果不成功,则显示一条消息吗?我认为这是不可能的,因为为了处理Ajax post,您必须在客户端编写javascript处理程序,javascript不能在客户端执行文件IO 然而,您可以做的是,发出一个ajax请求来检查文件是否存在并且是

我很确定这是不可能的,但我想我会问

我有一个
FileResult
,它返回一个文件,当它工作时没有问题。当由于某种原因,
FileResult
中出现错误时,我希望在用户屏幕上显示异常错误消息,最好是在弹出窗口中


我可以做一个Ajax post,成功时返回一个文件,如果不成功,则显示一条消息吗?

我认为这是不可能的,因为为了处理Ajax post,您必须在客户端编写javascript处理程序,javascript不能在客户端执行文件IO


然而,您可以做的是,发出一个ajax请求来检查文件是否存在并且是否可以下载。如果没有,则对该请求做出负面响应,这将在客户端弹出一个对话框。如果成功,请发出文件下载请求。

与MVC无关,但

可以使用
XMLHttpRequest
和新的HTML5
文件系统API
来完成,该API允许您处理二进制数据(在您的情况下从http响应获取)并将其保存到本地文件系统

请参见此处示例:

控制器(MyApicController)代码:

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);


            });
$(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);


            });