C#学习教程:从HttpPostAsp.NetMVC方法返回保存的文件全部编辑完成后,客户按下“下载”按钮,将生成的xml文件保存在自己的硬盘上,以备日后的下一步操作。所以我有一个简单的HTML表单:此表单数据通过angularJs函数调用发送,如下所示:$scope.sendForm=function(){//通过json发送图像数据的一些准备工作for(vari=0;i<$scope.data.Items.length;i++){$scope.data.Items[i].ImageAsString=$scope.data.Items[i].Image;}$http.post("下载",{array:$scope.data}).success(function(responseData){console.log(responseData);}).error(function(responseData){console.log("错误!"+响应数据);});};调用此函数后,将准备好的httppost请求发送到asp.netmvc下载操作:[HttpPost]publicFileResultDownload(ItemsArrayWrapperarray){//这里是传入数据处理逻辑//...returnFile(array.ConvertToItemsArray().Serialize(),"text/xml",name);我希望我的Download方法返回一个FileResult,这样一个文件保存对话框将出现在客户端上。但什么也没发生。我已经尝试构造各种响应标头,返回不同的MimeType,更改Download方法的返回类型,甚至尝试从Download方法调用[HttpGet]方法,但仍然没有出现在客户端上。在浏览器网络监视器中搜索-仅发送POST请求。是否可以将数据从HttpPost方法发送到客户端,以这种方式从angularJs函数调用?我错过了什么,为什么浏览器中没有显示保存对话框?或者,任何人都可以建议任何其他更合适的解决方案我希望我的Download方法返回FileResult,因此,文件保存对话框将出现在客户端上。但什么也没发生。不出事很正常。我建议你不要使用AJAX下载文件。只需构建一个普通的隐藏HTML表单,并自动将此表单提交给下载控制器操作。然后将出现“文件保存”对话框,提示用户保存文件。如果您绝对需要使用AJAX执行此操作,那么应该注意您可以使用HTML5FileAPI,它允许您在AJAX回调中保存二进制响应。但请注意,这仅适用于现代浏览器,如果您需要在您的网站中支持某些旧浏览器,则无论如何您将需要第一种方法。以上就是C#学习教程:从HttpPostAsp.NetMVC方法返回保存的文件共享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
