我从 Ajax 支持中获取了一个 (xlsx) 文件,它的格式为:
我需要将其保存在客户端上。如果在没有 Ajax的情况下完成window.open('/api/getbyuuid/0e0ca8e1-176 ...', '_blank'),则文件会自动下载并打开而不会出现问题。我正在尝试通过以下方式做到这一点new Blob():
Ext.Ajax.request({
url: '/api/ks/share/' + record.id,
method: 'GET',
success: function (response, opts) {
// console.log(response.responseText)
let type = response.getResponseHeader('Content-Type'),
blob = new Blob([response.responseText], { type: type }),
disposition = response.getResponseHeader('Content-Disposition'),
filename = disposition
.slice(disposition.indexOf('=') + 1, disposition.length)
.replace(/['"]/g, '')
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(blob, filename);
} else if (filename) {
let URL = window.URL || window.webkitURL,
downloadUrl = URL.createObjectURL(blob),
a = document.createElement('a');
a.href = downloadUrl;
a.target = '_blank';
a.download = filename;
document.body.appendChild(a);
a.click();
a.parentNode.removeChild(a);
setTimeout(() => { URL.revokeObjectURL(downloadUrl) }, 100);
}
},
failure: function (response, opts) {
console.log(response);
}
});
文件保存,但是当我尝试打开它时,它给出了一个错误:
通过单击“是”:


这对我有用