美文网首页
下载图片时,a标签无法下载问题

下载图片时,a标签无法下载问题

作者: 打1折的暧昧 | 来源:发表于2021-08-13 09:45 被阅读0次

原因:<a>标签通过download 属性下载文件只适用于同源的文件

<a download="自定义图片名" href="url">下载同源图片</a>

非同源的时候<a>标签的download属性无效,会发生跳转,并不会下载

解决:非同源下实现下载

情景1:如果存在CORS问题,先将图片转成base64 :(亲测有效)
downloadIamge(imgsrc, name) {//下载图片地址和自定义图片名称
let image = new Image();
// 解决跨域 Canvas 污染问题
image.setAttribute("crossOrigin", "anonymous");
image.onload = function() {
 let canvas = document.createElement("canvas");
 canvas.width = image.width;
 canvas.height = image.height;
 let context = canvas.getContext("2d");
 context.drawImage(image, 0, 0, image.width, image.height);
 let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
 let a = document.createElement("a"); // 生成一个a元素
 let event = new MouseEvent("click"); // 创建一个单击事件
 a.download = name || "qrcode.jpg"; // 设置图片名称
 a.href = url; // 将生成的URL设置为a.href属性
 a.dispatchEvent(event); // 触发a的单击事件
};
image.src = imgsrc;
}


情景2:如果不存在CORS问题,可以借助Blob实现下载(构造xhr请求文件地址, 以Blob的形式接收Response):
function downloadWithBlob(url,name) {
 fetch(url).then(res => res.blob().then(blob => {
  var a = document.createElement('a');
  var url = window.URL.createObjectURL(blob);
  var filename = name || 'qrcode.jpg';
  a.href = url;
  a.download = filename;
  a.click();
  window.URL.revokeObjectURL(url);
 }));
}


情景3:如果有文件content:
function funDownload(content, filename) {
    var eleLink = document.createElement('a');
    eleLink.download = filename;
    eleLink.style.display = 'none';
    // 字符内容转变成blob地址
    var blob = new Blob([content]);
    eleLink.href = URL.createObjectURL(blob);
    // 触发点击
    document.body.appendChild(eleLink);
    eleLink.click();
    document.body.removeChild(eleLink);
};

相关文章

  • 下载图片时,a标签无法下载问题

    原因: 标签通过download 属性下载文件只适用于同源的文件 非同源的时候 标签的download属性无效,会...

  • a标签下载问题

    a标签下载问题

  • python 使用 wand 处理 pdf

    python 使用 wand 处理图片时需要下载 ImageMagick,而且必须下载6.x版本,7.x版本无法运...

  • 无法下载!

    标签:网站 缓存 下载背景:临近毕业,你准备上知网下载文献,结果提示“无法下载”。前提:①你学校已购...

  • ​想尽一切方法来解决问题

    新产品即将上线,需要从苹果应用商店下载应用进行测试,可问题是始终无法将应用下载下来,提示是无法完成下载。无法下载就...

  • Java-RuoYi框架问题

    RuoYi-Vue-UI,无法install的问题 --可能是网络问题无法下载资源 --可以使用yarn工具下载依...

  • 2.前端下载各种类型文件

    1. 使用a标签的download属性,下载所有类型文件:(Blob对象) 注意问题: 1.跨域图片能正常裁剪(图...

  • DNS劫持问题记录

    问题描述:某些地区性客户反应应用更新无法下载问题排查原因:用户使用自带浏览器打开下载地址(无法下载)(浏览器打不开...

  • Android Studio 3.6 第一坑

    描述:无法下载pom/无法下载依赖 解决思路:(老毛病,配置或网络问题) gradle.properties(Gl...

  • Vue点击按钮下载 a标签下载 js 前端

    vue点击按钮下载: a标签下载

网友评论

      本文标题:下载图片时,a标签无法下载问题

      本文链接:https://www.haomeiwen.com/subject/jwrdbltx.html