a标签的下载

111 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

基于a标签的下载

用fetch发送请求 对请求回来的二进制文件流进行处理

      fetch('/upload/user.png').then((res) => {
        res.blob().then((blob) => {
          const blobUrl = window.URL.createObjectURL(blob);
          // 这里的文件名根据实际情况从响应头或者url里获取
          const filename = 'user.txt';
          const a = document.createElement('a');
          a.style.display = 'none'
          //这里需要插入body的话,后面需要再移除
          a.href = blobUrl;
          a.download = filename;
          a.click();
          window.URL.revokeObjectURL(blobUrl);
        });
      });
  如果是arraybuffer文件
  先把arraybuffer转化为
  生成Blob对象,设置type等信息
  const blobres = res.arrayBuffer();
  const fileBlob = new Blob([blobres],{ type: 'application/zip' })
  因为上面直接是blob对象,所以这里就接着,上面就ok了