前端下载 “不支持打开该类型文件或文件已损坏“问题
最开始做下载功能的时候,是模仿项目中已有的写法来实现的,这套模板应该可以适应大多数的下载,网上很多也是这种写法:
.then(res => {// res 为调用后端下载接口返回的值const blob = new Blob([res]);// 注意:文件类型不可少!当然也可以是其他类型比如 pdf,这取决于具体的文件。const fileName = 'xxx.png'; const elink = document.createElement("a");elink.download = fileName;elink.style.display = "none";elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click();URL.revokeObjectURL(elink.href);document.body.removeChild(elink);
})
所以呢,就只管照着用了,直到搬到另一个项目的时候,发现出了问题,文件能正常下载,但是无法打开。比如下载 pdf 显示 “不支持打开该类型文件或文件已损坏”,下载图片则是无法查看。
怎么会呢,同样的写法,放到一个项目中可行,另一个项目就不行了?
查了半天资料,也没查出个所以然,直到我打印了 res
,并且对比了两个项目中的 res
,我才发现了原因,原因就出在返回结果 res
!
A项目中可以直接使用res
,是因为在 axios 中对后端的响应做了拦截,所以new Blob([res])
中拿到的res
实际上是后端接口的res.data
,只不过这一层操作在全局被封装了。
但是 B 项目直接使用的$http.get().then()
,并未在全局对请求进行封装拦截。所以在这里需要取得的是res.data
于是,我把new Blob([res])
改成new Blob([res.data])
后,问题就解决了。
以上便是关于这个问题的解决方案,特此记录一下,希望有帮到碰到同样问题的你。
如有错误之处,还望及时指正!
前端下载 “不支持打开该类型文件或文件已损坏“问题相关推荐
- H5 下载word文件时预览失败,提示无法预览此文件,它可能已损坏,有部分可可以查看预览
移动端H5下载文件功能时,发现部分word文件可以在线打开 有些无法打开,提示"无法预览此文件,它可能已损坏": 但是在Pc端下载是可以正常打开的,移动端是不行. 代码如下: by ...
- 安装MySQL提示cab文件损坏_安装所需的 CAB 文件“Redist.cab”已损坏处理办法
近日为客户调试sql server 2008时意外的然出现两个报错,结果导致部分功能组件无法安装成功 如下 产品: Microsoft SQL Server 2008 联机丛书(简体中文) -- 错误 ...
- 使用FileOutPutStream下载docx文件报文件已损坏解决
代码发布到linux之后,通过接口下载了文件,打开文件提示文件已损坏,但是强行打开却是可以看到内容的,很奇怪. 在网上也找了好多办法,没能解决,最终是在响应头里加入一个Length之后,下载文件打开不 ...
- MATLAB读取结构体mat文件报错已损坏
遇到一个挺奇怪的事情,用MATLAB R2021a保存下来的.mat文件,里面是一个结构体:结果在MATLAB R2018b中load这个mat文件,提示"无法读取,改文件可能已损坏&quo ...
- 文件流下载文件后提示不支持打开该类型文件或文件已损坏
在react项目中用到下载,请求后端接口返回文件流,前端来处理文件流生成文件后下载. 要设置responseType!! 采用的方法就是百度上随便一搜就可以搜到的Blob方法,最开始要下载的文件格式为 ...
- 前端下载图片、pdf、excel、world文件;前端下载图片和pdf文件;前端a标签下载图片和pdf文件;下载文件名称不生效原因。
参考文章1 参考文章2 以下的下载是,拿到了后端给的下载图片的接口地址url > 方法1:将文本或者JS字符串通过 Blob 转换成二进制下载 优点:可以下载,也可以保存名称. //文件流参数和 ...
- Vmware 15 Pro 报错 安装所需的CAB文件“Workstation.cab”已损坏,无法使用
出现这个错误是你下载的安装包有问题,重新下就可以了! 如果你需要安装包: https://pan.baidu.com/s/1gR_iJzFZCetM2y3FuAZ2mQ 如果你需要破解码: https ...
- 因路径乱码使InstallShield Wizard安装包打开“出现1155错误,文件xxx.msi未找到“的解决方式
安装学校大物实验软件,该软件使用InstallShield打包,但我将安装包下载下来后打开无法正常运行.明明也已按教学视频所说安装了.Net Framework 3.5,还是出现错误. 我遇到的错误如 ...
- Mac打开第三方下载的软件提示已损坏的解决方法
mac打开第三方下载的软件时提示以下内容:"XXX"已损坏,打不开,您应该将它已到废纸篓. 出现这个问题的原因是新版本的macos的安全机制默认不允许用户安装非App Store下 ...
最新文章
- RHEL 5搭建Samba服务器详细过程
- std::unique_lock与std::lock_guard区别示例
- C++静态成员和静态成员函数
- go 判断channel是否关闭
- mysql binlog解析 c_解析MYSQL BINLOG二进制格式(9)--infobin解析binlog帮助文档
- 批量生产insert 或者update语句
- ubuntu16.04 安装python3.6
- 5条线程轮流打印1~100
- stm32采集交流电压信号_基于STM32的多路电压采集的设计与实现
- wechat微信模板消息推送demo
- U3D里UI相关逻辑和文件的组织关系的各种形式的比较
- 【软件工程】软件维护
- Mutation Observer API
- 2023最新高频前端面试题总结(附答案)
- 动态规划求解多段图问题
- 微信小程序自定义组件中获取app实例的值,生命周期与页面的生命周期执行先后顺序
- web前端:简单的海报设计(简单的插入静态图为背景)
- 三维实景建模及倾斜摄影建模解决方案,附应用案例
- ajax json 根据邮政编码查地址
- 单模单纤FC接口光纤传输距离
热门文章
- 基于CodeMirrorTernJS的汉语Javascript编辑器(和翻译器)
- win10 音频设备图形隔离 占用CPU
- Linux 定时任务shell脚本定时移动服务器日志文件到指定目录下
- Spring注解之@GetMapping详解
- Django案例:显示图书的信息books
- 【To Be Continued】一些有意思的计算机小问题
- Oracle ORA-01460报错解决方法
- ROS学习系列(一):ubuntu16.04下安装 ROS IDE RoboWare Studio 教程
- 京东数科前端岗位面历
- 使用latex导出IEEE文献格式