使用场景
<div ><a href="#" onclick="changeName('http....','customid')"> 附件下载</a></div>
附件url为外部系统,下载时需要用内部系统的业务号重新命名
function getBlob(url) {
return new Promise(resolve => {
const xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = () => {
if (xhr.status === 200) {
resolve(xhr.response);
}else if(xhr.status === 404) {
alert("附件地址已失效");
}else{
alert("附件下载异常,请联系管理员");
}
};
xhr.send();
});
}
function saveAs(blob, filename) {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
link.click();
};
function changeName(url,customID) {
let fileName = '';
if( customID == '' || customID== undefined ){
let arr = url.split('/');
fileName = arr[arr.length-1];
}else{
fileName = customID+ '.json';
}
getBlob(url).then(blob => {
saveAs(blob,fileName);
})
};
该代码片段展示了一个JavaScript函数,用于从外部系统下载附件。它首先使用XMLHttpRequest获取Blob对象,然后根据提供的业务号(customID)重命名文件,最后触发下载。如果customID不存在,则使用附件URL的最后一个路径段作为文件名。异常处理包括404错误和非200状态码的响应。
2369

被折叠的 条评论
为什么被折叠?



