前端 浏览器 下载图片,pdf等文件,而不是直接打开文件

首先分为几种情况

  1. 同源--------------------(可以下载)
  2. 非同源不跨域-----------(可以下载)
  3. 非同源跨域--------( 不可以)

至于上面结论是否正确,我也不敢保证哈哈

同源

  1. 这个一般比较简单,唯一注意的是 要在和图片地址一样的域名下测试
handleDownloadFile(val) {
      let aEl = document.createElement("a");
      document.body.appendChild(aEl);
      aEl.rel = "noopener";
      aEl.href = `${val.downloadUrl}?name=${val.file_name}.${val.extension}`
      aEl.download = `${val.file_name}.${val.extension}`
      aEl.click();
      setTimeout(() => {
        document.body.removeChild(aEl);
      }, 0);
    },
  1. 其实有时候就是想本地测试,那可以参考下面的 非同源不跨域

非同源不跨域

是指 文件和当前网站不是同一源;但是图片地址后端解决了跨域问题(注意是后端解决了跨域问题)

这个推荐直接用FileSaver.js,具体可以看文档FileSaver.js

import { saveAs } from 'file-saver';

saveAs(url, `${name}.pdf`);

非同源跨域

这个我目前到没试过,好像不行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值