a链接有些图片不能下载的问题

2021-12-23  本文已影响0人  小姑凉喜欢无脸男

情景:直接前端下载图片、pdf、mp4等文件,没有和后端交互。
常见用法:a链接加download属性

<a href="https://cdnxxxx.com/activity/abc.png" download="">下载</a>

问题:有些cdn上的图片、文件不能直接下载,直接打开。
解决方案:

<div onclick="handleDownload('https://cdnxxxx.com/activity/load.pdf')">下载</div>

<script>
    function handleDownload(str) {
      const name = "附件";
      const url = str;
      const suffix = url.substring(url.lastIndexOf("."), url.length);
      
      const x = new XMLHttpRequest();
      x.open("GET", url, true);
      x.responseType = 'blob';
      x.onload=function(e) {
          const url = window.URL.createObjectURL(x.response);
          const a = document.createElement('a');
          a.href = url;
          a.download = name + suffix;
          a.click()
      };
      x.send();
    }
</script>

ps:该方法实验了一部分,如有失效的时候,欢迎指出。

上一篇下一篇

猜你喜欢

热点阅读