资源下载
对于一些浏览器可以解析的文件,使用 open 或 <a> 标签 download 时,存在无法下载为文件而直接打开的情况; 可以借助 Ajax 或 fetch 直接获取 Blob 资源,之后转为 ObjectURL 下载即可
Content-disposition
网络资源是否可以下载取决于后端配置 Content-disposition 头
- inline: 请求资源作为相应的一部分展示
- attactment: 请求资源作为附件进行下载
inline 配置下,即便使用 a 标签也会触发为展示操作
代码实现
若需要作为文件下载,可以使用 Ajax 或 fetch 作为 blob 资源进行请求
js
function downloadTarget(url, name) {
fetch(url, {
method: "GET",
responseType: "blob",
})
.then(res => res.blob())
.then(ret => {
const blobURL = URL.createObjectURL(ret);
const a = docuemnt.createElement("a");
a.href = blobURL;
a.download = name;
a.click();
URL.revokeObjectURL(blobURL);
});
}