同源可以直接使用a标签,跨域时神烦,测试成功的代码如下,可直接复制测试
function ddd(){
console.log(22222)
// 创建隐藏的可下载链接
// let blob = 'http://pic.c-ctrip.com/VacationH5Pic/mice/wechat/ewm01.png';
// var a = document.createElement('a');
// a.style.display = 'none';
// a.href = blob;
// a.download = 'QRcode.jpg';
// document.body.appendChild(a);
// a.click();
// //移除元素
// document.body.removeChild(a);
//canvans下载
let src = 'http://pic.c-ctrip.com/VacationH5Pic/mice/wechat/ewm01.png';
var canvas = document.createElement('canvas');
var img = document.createElement('img');
img.onload = function(e) {
canvas.width = img.width;
canvas.height = img.height;
var context = canvas.getContext('2d');
context.drawImage(img, 0, 0, img.width, img.height);
// window.navigator.msSaveBlob(canvas.msToBlob(),'image.jpg');
// saveAs(imageDataUrl, '附件');
canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);
canvas.toBlob((blob)=>{
let link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'aaa';
link.click();
}, "image/jpeg");
// context.toBlob(function(blob) {
// console.log('blob :', blob);
// let link = document.createElement('a');
// link.href = window.URL.createObjectURL(blob);
// link.download = 'aaa';
// }, "image/jpeg");
}
img.setAttribute("crossOrigin",'Anonymous');
img.src = src;
}
如果还不可以,设置服务器或者代码请求地址的header头
php在方法最前面加:
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:OPTIONS, GET, POST'); // 允许option,get,post请求
header('Access-Control-Allow-Headers:x-requested-with'); // 允许x-requested-with请求头
当前端请求显示

这样子应该就好了
本文提供了一种解决跨域文件下载问题的方法,通过Canvas和Blob实现图片的下载,并介绍了如何设置服务器Header头来允许跨域请求,适用于前端开发中遇到的跨域限制问题。

58

被折叠的 条评论
为什么被折叠?



