美文网首页
js下载跨域的图片

js下载跨域的图片

作者: Ailin886 | 来源:发表于2020-07-17 15:37 被阅读0次

两种图片下载方式:点击下载(常用于pc端)、长按下载(h5端更适合)

一、点击下载

步骤记录:

1、用户点击下载按钮

2、使用canvas将页面获取的远程图片转换为base64格式

3、动态创建一个a标签并将转换后的图片赋值给a标签的src

4、触发a标签的并下载

以下是js代码:

````

imgToBase64(imgSrc,imgName){

      var image = new Image()

      // 解决跨域 Canvas 污染问题

      image.setAttribute('crossOrigin', 'anonymous')

      image.onload = function () {

          var canvas = document.createElement('canvas')

          canvas.width = image.width

          canvas.height = image.height

          var context = canvas.getContext('2d')

          context.drawImage(image, 0, 0, image.width, image.height)

          var url = canvas.toDataURL('image/png')

          // 生成一个a元素

          var a = document.createElement('a')

          // 创建一个单击事件

          var event = new MouseEvent('click')

          // 将a的download属性设置为我们想要下载的图片名称,若name不存在则使用‘下载图片名称’作为默认名称

          a.download = imgName|| '下载图片名称'

          // 将生成的URL设置为a.href属性

          a.href = url

          // 触发a的单击事件

          a.dispatchEvent(event)

      }

      image.src = imgSrc;

    }

````

二、长按下载

步骤记录:

1、先使用canvas将页面获取的远程图片转换为base64格式

2、将转换后的base64图片赋值到img标签上显示

3、长按图片会弹出功能菜单,选择下载即可

以下是js代码:

````

imgToBase64(imgSrc,imgEl){

      var image = new Image()

      // 解决跨域 Canvas 污染问题

      image.setAttribute('crossOrigin', 'anonymous')

      image.onload = function () {

          var canvas = document.createElement('canvas')

          canvas.width = image.width

          canvas.height = image.height

          var context = canvas.getContext('2d')

          context.drawImage(image, 0, 0, image.width, image.height)

          var url = canvas.toDataURL('image/png')

            imgEl.src=url;

      }

      image.src = imgSrc;

    }

````

h5跨域图片下载经测试在android的微信、uc浏览器、app内嵌网页以及ios12的微信、safari浏览器上都可以完美下载图片

相关文章

  • js下载跨域的图片

    两种图片下载方式:点击下载(常用于pc端)、长按下载(h5端更适合) 一、点击下载 步骤记录: 1、用户点击下载按...

  • 下载图片跨域

    首先在前端绘制图片的时候添加crossOrigin=“Anonymous” 。 其次在阿里云的oss设置中配置允许...

  • 图片下载非同源跨域cross解决

    1图片下载和其他 图片的下载特殊一些,不像txt/xls其他格式,多会涉及跨域的问题。1跨域服务端的同源可以用ca...

  • pdf.js预览pdf文件

    一、下载pdf.js[http://mozilla.github.io/pdf.js/] 二、使用 跨域问题的解决...

  • html2canvas跨域解决方案

    核心代码 useCORS:true,//(图片跨域相关)allowTaint:false,//允许跨域(图片跨域相...

  • 跨域情况下,返回url地址,并改名,下载文件

    1、后台的文件给流,不存在跨域问题。不现实2、给url 网址,后台解决跨域。百度图片就可以改名下载(不报跨域问题)...

  • 跨域问题详解分析

    参考文档 CORS详解 跨域资源共享 CORS 详解 js中几种实用的跨域方法原理详解 跨域的那些事儿 跨域与跨域...

  • 开发灵异事件之图片下载

    现象 使用download属性用a标签下载图片,变成了新页签打开预览 原因 下载的图片跨域,早期chrome没有这...

  • 跨域

    跨域 什么是跨域: 解决跨域 通过jsonp原理:在页面引入跨域js和css时,没有存在跨域问题.因此可以动态创建...

  • 2021-02-23

    一、什么是跨域 二、vue.config.js 跨域配置

网友评论

      本文标题:js下载跨域的图片

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