下载文件

浏览器下载图片

一般来说前端实现的思路就是通过动态创建a标签,设置其download属性,最后删除a就好了,对于不是图片的文件一般都可以下载,但是如果是图片,有些浏览器会自动打开图片,所以我们需要手动把它转化为data:URLs或blob:URLs,基于这个原理,我们可以用fileReader,也可以用fetch-URL.createObjectURL,这里经过大量测试我采用后者:

function download(url, filename) {
  return fetch(url).then(res => res.blob().then(blob => {
    let a = document.createElement('a');
    let url = window.URL.createObjectURL(blob);
    a.href = url;
    a.download = filename;
    a.click();
    window.URL.revokeObjectURL(url);
  }))
}

Tips

作者:徐小夕

链接:https://juejin.im/post/5d8399e8f265da03a9506fc6open in new window

来源:掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。