我的要求是
在Web应用程序中,如果单击下载链接,则会进行REST Web服务调用。
Web服务的响应是byte []和Content-Disposition = [attachment;]
通过弹出一个对话框将响应保存到本地驱动器中。
我尝试过使用ajax调用并成功获取byte []响应,但无法保存到本地硬盘中。代码段如下所示。
HTML代码
<div data-ng-app="myApp" data-ng-controller="myCtrl" >
<a href="#" data-ng-click="downloadImage()">download</a>
</di>
Angular Script
angular.module("myApp", []).controller("myCtrl", function ($scope, $http){
$scope.downloadImage= function (){
var responsePromise = $http.get(resourceUrl);
responsePromise.success(function (data) {
alert("File Stream:"+data);
});
responsePromise.error(function(data) {
alert("AJAX failed! in downloading Image:"+ data);
});
}
});
在警报中,我正在以byte []的形式获得完整的流。我想保存到本地硬盘。我知道响应存储在浏览器内存中,但如何将存储重定向到本地驱动器?
任何建议都将不胜感激。
我们不应该为此使用ajax调用吗?如果没有,替代方法是什么?
任何人都可以帮我解决这个问题,因为这是我的首要任务。
答案 0 :(得分:1)
我最近使用Blob和FileSaver执行此操作:
$http.get(url, {responseType:'blob'})
.then(function(results){
var data = results.data;
var blob = new Blob(
[data],
{type: "image/png"}
);
saveAs(blob, "myFilename.png");
});
特别注意$ http.get方法的responseType配置参数。
希望能帮助。