Method: PUT
Endpoint :
/application1/file/{filetype}/transactionType {
"accountNumber":"344224433344333"
}
API将返回CSV / pdf / xls
类型的文件问题:
如何在新标签页中打开或下载起诉angularJs 1.5
我尝试了一些解决方案,但它在IE中无效 https://codepen.io/waghanil87/pen/vZBozE
提前致谢!
答案 0 :(得分:1)
您需要将base64字符串转换为blob
类型然后再加载/打印
function b64toBlob(b64Data,callback) {
var contentType = 'application/pdf'; // put your file type here
var sliceSize = 512;
b64Data = b64Data.replace(/^[^,]+,/, '');
b64Data = b64Data.replace(/\s/g, '');
var byteCharacters = window.atob(b64Data);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
blob = new Blob(byteArrays, {
type: contentType
});
callback(blob)
}
function downloadData(fileName,blob) {
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
}
// call it like this
b64toBlob(base64string,function(data){
function downloadData('sample.pdf',data)
})