a 标签 、el-link 与 file-saver.js 下载文件

解决方法一:
在a标签 href  或 el-link href 属性链接后拼接这个查询参数,用来指定响应内容类型,通常用于文件下载,图片格式与pdf文件不会直接在浏览器预览 
        <a href="   url ?response-content-type=application/octet-stream " target="_blank" download="filename指定文件名称"></a>

测试文件:.png,.jpg,.txt,.doc,.docx,.zip,.pdf,.xlsx,.mp4     
---使用谷歌浏览器(版本:123):可以下载,下载后打开无异常  
---使用火狐浏览器(版本 124):pdf格式是预览,其他可以下载,下载后打开无异常
 ---使用edge浏览器(版本:122): docx,xlsx格式 会新启空白窗口,接着浏览器打开预览-顶部有提示下载按钮,其他可以下载,下载后打开无异常
--使用苹果自带浏览器:xlxs格式 会多空白页-提示不安全文件是否保存下载,其他格式可以正常下载,下载后可打开

注意:
https://img2024.cnblogs.com/blog/35695/202404/35695-20240402153114454-142795212.jpg?response-content-type=application/octet-stream
报错类型:Request specific response headers cannot be used for anonymous GET response
有的地址,跟服务器设置响应头格式有关系,这个地址就下载不下来

解决方法二:

npm i file-saver --save 

import { saveAs } from 'file-saver';

// 参数1: 支持 Blob/File/Url
// 参数2:文件名  xxx.doc
// 参数3: 可选 Object 

saveAs(Blob/File/Url, optional DOMString filename, optional Object { autoBom })

测试文件:.png,.jpg,.txt,.doc,.docx,.zip,.pdf,.xlsx,.mp4     
  谷歌浏览器: 图片格式、pdf、.mp4 直接新启窗口 打开预览,其他可以下载打开,其中txt文件乱码

解决方法:在.txt 文件地址后拼接 ?response-content-type=application/octet-stream
downloadFn(url, fileName) {
      if (fileName.includes(".txt")) {
        saveAs(url + "?response-content-type=application/octet-stream", fileName)
      } else {
        saveAs(url, fileName)
      }
    }

参考链接:https://blog.csdn.net/weixin_48674314/article/details/129093224

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值