前端下载网络路径的图片及PDF

PDF

重点是在a标签上面添加?response-content-type=application/octet-stream

 第一种方法(这种方法设置的文件名好像不生效)

const fileName = '我的' + '.pdf'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'none'
elink.href = 'https://xxxxxx/test/bcdd7d41-6533-4f7c-8364-94feb5ea472f.pdf?response-content-type=application/octet-stream'
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink)

第二种方法

let xhr = new XMLHttpRequest()
xhr.open('get', row.fileUrl, true)//第二个参数是网络路径
xhr.setRequestHeader('Content-Type', `application/.pdf`)
xhr.responseType = 'blob'
xhr.onload = function () {
    if (this.status == 200) {
        //接受二进制文件流
        var blob = this.response
        // this.downloadExportFile(blob, 'sdf', '.pdf')
        let downloadElement = document.createElement('a')
        let href = blob
        if (typeof blob == 'string') {
            downloadElement.target = '_blank'
        } else {
            href = window.URL.createObjectURL(blob) //创建下载的链接
        }
        downloadElement.href = href
        downloadElement.download = 'xxx.pdf' //下载后文件名
        document.body.appendChild(downloadElement)
        downloadElement.click() //点击下载
        document.body.removeChild(downloadElement) //下载完成移除元素
        if (typeof blob != 'string') {
            window.URL.revokeObjectURL(href) //释放掉blob对象
        }
    }
}
xhr.send()

 图片

let image = new Image()
image.setAttribute('crossOrigin', 'anonymous')
image.src = 'https://xxxxx/test/0a7cdbcd-8b44-4c42-885d-c9df0d948c8d.jpg'
image.onload = () => {
    let canvas = document.createElement('canvas')
    canvas.width = image.width
    canvas.height = image.height
    let ctx = canvas.getContext('2d')
    ctx.drawImage(image, 0, 0, image.width, image.height)
    canvas.toBlob((blob) => {
        let url = URL.createObjectURL(blob)
        let eleLink = document.createElement('a')
        eleLink.download = 'div'
        eleLink.href = url
        eleLink.click()
        eleLink.remove()
        download(url, 'img')
        // 用完释放URL对象
        URL.revokeObjectURL(url)
    })
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值