我在一个Angular JS应用程序中使用FileSaver.js和Blob.js来保存由REST服务返回的Blob.js(它返回一个表示文件的字节数组)。
var headers = {headers: {"Authorization":"Bearer "+token, "Accept":"application/pdf"}};
$http.get(URL, headers)
.success(function (data) {
var blob = new Blob([data], {type: 'application/pdf'});
saveAs(blob, 'contract.pdf');
});
文件以正确的类型保存,页数也正确,但它是完全空白的。使用编辑器打开它,结果发现它只包含服务器返回的数据的第一部分,就像被截断一样。
感谢大家的帮助!
发布于 2014-11-06 02:55:07
$http.get可能没有正确处理二进制数据。尝试使用$http({method: "GET", url: URL, responseType: "arraybuffer", ...})
(see angularjs)获取可以放入数据中的二进制对象。
您也可以使用responseType: "blob"
,这样您甚至不必创建var blob
,但我认为responseType对浏览器的支持较少。
发布于 2018-02-19 18:51:14
向config参数添加一个响应类型对我来说很有效。尝试:
var config = { responseType: 'blob', headers: {"Authorization":"Bearer "+token,
"Accept":"application/pdf"}};
$http.get(URL, config)
.success(function (data) {
var blob = new Blob([data], {type: 'application/pdf'});
saveAs(blob, 'contract.pdf');
});
https://stackoverflow.com/questions/26754295
复制相似问题