h5下载图片的一般直接用a标签和download属性直接打开,浏览器默认下载,但这仅限于同源的情况下,在非同源的情况下,就会打开另一个窗口,显示图片。以阿里云oss为例,首先需要在阿里云oss,创建个跨域规则,如图:
阿里云oss设置:
前端代码:
function download(url) {
//url--对应阿里云资源地址
fetch(url).then(res => res.blob().then(blob => {
let a = document.createElement('a');
let url = window.URL.createObjectURL(blob);
let filename = new Date().getTime() +'.png';
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);
}))
}