美文网首页前端开发那些事儿
vue图片,pdf等资源文件下载到本地(同源和跨域两种方法)

vue图片,pdf等资源文件下载到本地(同源和跨域两种方法)

作者: small_zeo | 来源:发表于2021-07-05 15:59 被阅读0次

同源(访问的网站域名与服务器域名一致)才能用方法一下载

方法一: 同源资源文件下载

const downLoadFunc = (imgSrc, imgName) => {
       if (!imgSrc)  return
        let url = window.URL.createObjectURL(new Blob([imgSrc]))
        let link = document.createElement('a')
        link.style.display = 'none'
        link.href = url
        link.setAttribute('download', imgName)
        document.body.appendChild(link)
        link.click()
}

方法二: 跨域资源图片下载

const downLoadFunc = (imgSrc, imgName) => {
        if (!imgSrc)  return
        let image = new Image() 
        image.setAttribute('crossOrigin', 'anonymous')
        image.onload = function () {
            let canvas = document.createElement('canvas')
            canvas.width = image.width
            canvas.height = image.height
            let context = canvas.getContext('2d')
            context.drawImage(image, 0, 0, image.width, image.height)
            let url = canvas.toDataURL('image/png') //得到图片的base64编码数据

            let link = document.createElement('a') 
            let event = new MouseEvent('click') 
            link.download = imgName || (new Date().getTime())  
            link.href = url  
            link.dispatchEvent(event)  
        }
        image.src = imgSrc
}

方法三: 跨域资源pdf下载

const downLoadFunc = (imgSrc, imgName) => { 
        if (!imgSrc)  return
        fetch(imgSrc).then(function (response) {
            response.arrayBuffer().then(res => {
                let type = 'application/pdf;charset-UTF-8' // 资源类型pdf
                // 常见资源类型 
                   // 1.excel: type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
                   // 2.图片: type = "image/*"
                   // 3.视频: type = "video/*"
                   // 4.音频: type = "audio/*"
                   // 5.pdf: type = "application/pdf;charset-UTF-8"
                //
                let blob = new Blob([res], {type: type})
                let objectUrl = URL.createObjectURL(blob)
                let link = document.createElement('a')
                link.style.display = 'none'
                link.href = objectUrl
                link.setAttribute('download', imgName)
                document.body.appendChild(link)
                link.click()
                document.body.removeChild(link)
            })
        })
}

相关文章

  • vue图片,pdf等资源文件下载到本地(同源和跨域两种方法)

    同源(访问的网站域名与服务器域名一致)才能用方法一下载 方法一: 同源资源文件下载 方法二: 跨域资源图片下载 方...

  • 跨域之三:降域 和 postMessage

    本节内容:实现跨域常用的两种方式 —— 降域 和 postMessage 零:跨域报错展示 在非同源情况下,操作 ...

  • AnugularJS 的跨域

    通过 php 桥接跨域 实际上并非跨域,用 Php 文件引入进来,同源下执行 Php 文件,所以并非跨域 $htt...

  • 同源策略和跨域问题

    浏览器同源政策及其规避方法 跨域资源共享 CORS 详解

  • 跨域、通讯类

    什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源 什么是同源策略? 同源策略/SOP(Same...

  • Ajax的跨域问题

    什么是跨域及来源 跨域问题来源于浏览器的同源策略,JavaScript只能访问和操作自己域下的资源,不能访问和操作...

  • JSONP、CORS、跨域

    跨域 同源:两个文档同源需满足:协议、域名、端口相同跨域:不同域之间相互请求资源,就算作“跨域“。js进行DOM操...

  • 跨域之二:JSONP 和 CORS

    本节内容:实现跨域常用的两种方式 —— JSONP 和 CORS 零:跨域报错展示 在非同源情况下,调用 Ajax...

  • 跨域

    什么是跨域 跨域指JS不能访问和操作其他域下的资源。它是由浏览器的同源策略造成的,为的是加强浏览器的安全性。同源策...

  • 跨源网络访问

    链接:浏览器的同源策略链接:跨域资源共享链接:跨域共享数据的十种方法链接:前端跨域问题及其解决方案 广义的跨域:1...

网友评论

    本文标题:vue图片,pdf等资源文件下载到本地(同源和跨域两种方法)

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