Js下载图片(解决跨域问题)

Posted 张长长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Js下载图片(解决跨域问题)相关的知识,希望对你有一定的参考价值。

function downloadImage(imgsrc, name) {
    const image = new Image();
    // 解决跨域 Canvas 污染问题
    image.setAttribute(\'crossOrigin\', \'anonymous\');
    image.onload = function () {
        const canvas = document.createElement(\'canvas\');
        canvas.width = image.width;
        canvas.height = image.height;
        const context = canvas.getContext(\'2d\');
        context.drawImage(image, 0, 0, image.width, image.height);
        const url = canvas.toDataURL(\'image/png\');
        const a = document.createElement(\'a\');
        const event = new MouseEvent(\'click\');
        a.download = name || \'photo\';
        a.href = url;
        a.dispatchEvent(event);
    };
    image.src = imgsrc;
}

方法二:

function downloadImage(imgsrc, name) {
    const a = document.createElement(\'a\');
    a.href = `${imgsrc}?response-content-type=application/octet-stream`;
    a.download = name || \'\';
    a.click();
    a.remove();
}

最稳妥的方案是后端给接口下载图片
我理解通过href和src下载是类似于jsonp的跨域解决方式,但这两种方法好像都有些情况仍然是跨域的。。。

以上是关于Js下载图片(解决跨域问题)的主要内容,如果未能解决你的问题,请参考以下文章

js——原生js借助Cavas自动下载保存图片

Node.js+Express框架跨域解决方案

项目出现跨域问题,如何解决

项目出现跨域问题,如何解决

上传图片截图预览控件不显示cropper.js 跨域问题

求助,哪位大神知道html2canva 有跨域图片,怎么解决