Skip to content
大纲

资源下载

对于一些浏览器可以解析的文件,使用 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);
    });
}