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