当下载资源跨域的时候参考了https://blog.csdn.net/weixin_44379204/article/details/105056713方法1
当前位置:   article > 正文

a href标签下载文件遇到下载失败 打开文件的问题_a.herf = this.downfileurl

a.herf = this.downfileurl

a href download 此方法只能用于同一个域名的文件资源下载 跨域或者三方平台的特殊资源图片(比如 微信公众号资源图片)总是会打开资源,而非下载!

<a href="/images/logo.png" download="下载资源名称">

当下载资源跨域的时候 

参考了https://blog.csdn.net/weixin_44379204/article/details/105056713

方法1

  1. <a @click="downloadFile(fileUrl,fileName)">下载</a>
  1. ...
  2. downloadFile(url, fileName) {
  3. var x = new XMLHttpRequest();
  4. x.open("GET", url, true);
  5. x.responseType = 'blob';
  6. var url;
  7. x.onload=function(e) {
  8. url = window.URL.createObjectURL(x.response);//createObjectURL 较为占用内存
  9. var a = document.createElement('a');
  10. a.href = url
  11. a.download = fileName;
  12. a.click()
  13. }
  14. //在资源下载完成后 可以人工清除createObjectURL 占用的缓存资源
  15. window.URL.revokeObjectURL(url);
  16. },
  17. ...

方法2 (把图片资源转成canvas 在用href 去下载canvas资源)

  1. //图片下载-不同源图片的下载 imgsrc地址 name图片名字
  2. downloadIamge(imgsrc, name) {
  3. var image = new Image();
  4. // 解决跨域 Canvas 污染问题
  5. image.setAttribute("crossOrigin", "anonymous");
  6. image.onload = function() {
  7. var canvas = document.createElement("canvas");
  8. canvas.width = image.width;
  9. canvas.height = image.height;
  10. var context = canvas.getContext("2d");
  11. context.drawImage(image, 0, 0, image.width, image.height);
  12. var url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
  13. var a = document.createElement("a"); // 生成一个a元素
  14. var event = new MouseEvent("click"); // 创建一个单击事件
  15. a.download = name || "photo"; // 设置图片名称
  16. a.href = url; // 将生成的URL设置为a.href属性
  17. a.dispatchEvent(event); // 触发a的单击事件
  18. };
  19. image.src = imgsrc;
  20. },

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/63571
推荐阅读
相关标签
  

闽ICP备14008679号