通常咱们下载文件能够应用a标签的download属性,但此属性仅在同源无效,详情MDN文档,如果非同源下载图片时,浏览器会关上新的tab页展现图片,为了兼容下面两种状况,能够应用JS办法实现:

// 获取图片DataURLconst getImageDataURL = (image) => {  const canvas = document.createElement('canvas')  canvas.width = image.width  canvas.height = image.height  const ctx = canvas.getContext('2d')  ctx.drawImage(image, 0, 0, image.width, image.height)  const extension = image.src.substring(image.src.lastIndexOf('.') + 1).toLocaleLowerCase()  return canvas.toDataURL('image/' + extension)}// 执行下载// url - 图片地址(必填)// name - 图片名称(选填,如未传,应用url文件名)export const downloadImage = (url, name) => {  if (!url) {    return  }  const a = document.createElement('a');  const filename = name || url.substring(url.lastIndexOf('/') + 1).toLocaleLowerCase()  a.setAttribute('download', filename)  const image = document.createElement('img');  image.setAttribute('crossOrigin', 'Anonymous')  image.onload = () => {    a.href = getImageDataURL(image)    a.click()  }  image.src = url}