解决方法一:
在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