【发布时间】:2017-03-13 09:33:51
【问题描述】:
我正在尝试从我的服务器(spring mvc 控制器)下载一个 zip 文件。 这是我在 angularjs (1.5) 控制器中下载 zip 文件的代码。
$http({
url: '/myurl',
method: 'GET',
headers: {
'Content-type': 'application/zip'
},
responseType: 'arraybuffer'
}).success(function (data,status,headers) {
var blob = new Blob([data], {type: "application/zip"});
var objectUrl = URL.createObjectURL(blob);
var file = headers('Content-Disposition');
window.open(objectUrl);
});
上面的代码可以工作,但我需要给出我在响应头中得到的文件名。我从 header('Content-Disposition') 获得了文件名,如何使用这个文件名下载文件?目前它正在给出任何随机文件名。
我尝试了下面的代码,它在 chrome 中工作,但在 mozilla 中不工作......还有其他适用于所有浏览器的解决方案吗?
//var anchor = document.createElement("a");
//anchor.download = "ATMOSLogFiles.zip";
//anchor.href = objectUrl;
//anchor.click();
感谢您的帮助!
【问题讨论】:
-
尝试搜索“弹簧附件”
-
你为什么首先使用 Ajax?
-
为什么要设置
'Content-type': 'application/zip'的请求头?这是一个 GET 请求。请求中没有正文来描述其内容类型。 -
有什么反馈或建议吗?
-
Angular File Saver 是一个很好的 polyfill。
标签: javascript angularjs zip