前端下载url文件(解决PDF, 图片自动在浏览器打开)

常规下载方法:

javascript 复制代码
/* 方法1 */
window.open(下载url地址, '_blank')

/* 方法2 */
const link = document.createElement("a");
link.download = true;
link.href = 下载url地址;
link.click();
document.body.removeChild(link);

pdf文件默认在浏览器中展示解决方案:

一、 更改浏览器设置

二、通过canvas下载图片

javascript 复制代码
    let image = new Image()
    // 解决跨域 Canvas 污染问题
    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 a = document.createElement('a') // 生成一个a元素
        let event = new MouseEvent('click') // 创建一个单击事件
        a.download = '图片' // 设置图片名称
        a.href = 文件url地址// 将生成的URL设置为a.href属性
        a.dispatchEvent(event) // 触发a的单击事件
    }
    image.src = row.fileUrl

三、通用解决方案(这种主要是让浏览器识别到这个文件的type不是application/pdf,这样浏览器就不会自动在浏览器中打开该文件了)

javascript 复制代码
const link = document.createElement("a");
link.download = /* 文件名 */;
link.href = `${文件URL}?response-content-type=application/octet-stream`;
link.click();
document.body.removeChild(link);
相关推荐
swipe34 分钟前
从 0 到 1 实现大文件上传:分片、秒传、断点续传、暂停、重试与服务端合并
前端·javascript·面试
爱勇宝43 分钟前
我做了一个只用来搜歌词的小 App
android·前端·后端
甲维斯1 小时前
用AI还原《坦克大战》并3D化升级!
前端·人工智能·游戏开发
IT_陈寒2 小时前
SpringBoot自动配置坑了我一晚上,原来问题出在这
前端·人工智能·后端
kyriewen2 小时前
AI 生成的代码能跑就行?这 5 个坑迟早炸
前端·javascript·ai编程
kisshyshy2 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
谷子在生长2 小时前
纯血鸿蒙自定义弹窗最佳实践:从「到处复制」到「一行调用」
前端·harmonyos
壹方秘境3 小时前
我用Go语言开发了一个跨平台的HTTPS抓包和调试工具
前端·后端·ios
神秘面具男3 小时前
HarmonyOS 6.0跨端远程控制
前端·后端
枫树下x3 小时前
NestJS基础框架
前端