起因描述

做一个web下载docx的功能,后台读取文件,Response写流,到前端通过Blob创建下载链接,一切正常

但是最后发现文件下载后就打不开了,显示需要修复,修复后就可以打开了

各种查找,基本都是在blob格式上找问题,尝试了,都不可以

适配现象

最后对比下源文件和下载后的文件,下载的文件总比源文件多出几个字节
往上追溯了下,发现BufferedInputStream 还是132511 字节,到了blob变成了132513字节了

解决方案

应该是传输过程转换成2进制出了问题,但是一是找不出原因
恰好查了查Blob的 API

Blob.slice() 方法用于创建一个包含源 Blob的指定字节范围内的数据的新 Blob 对象。ar blob = instanceOfBlob.slice([start [, end [, contentType]]]};参数
start 可选
这个参数代表 Blob 里的下标,表示第一个会被会被拷贝进新的 Blob 的字节的起始位置。如果你传入的是一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是  Blob 的倒数第十个字节。它的默认值是0, 如果你传入的start的长度大于源 Blob 的长度,那么返回的将会是一个长度为0并且不包含任何数据的一个 Blob 对象。end 可选
这个参数代表的是 Blob 的一个下标,这个下标-1的对应的字节将会是被拷贝进新的Blob 的最后一个字节。如果你传入了一个负数,那么这个偏移量将会从数据的末尾从后到前开始计算。举例来说, -10 将会是 Blob 的倒数第十个字节。它的默认值就是它的原始长度(size).contentType 可选
给新的 Blob 赋予一个新的文档类型。这将会把它的 type 属性设为被传入的值。它的默认值是一个空的字符串。返回值
一个新的 Blob 对象,它包含了原始 Blob 对象的某一个段的数据。

灵机一动,干脆去掉两个字节,这下竟然正常了!
具体原因还没分析,权当给遇到相同问题的提供个临时方案。

response.data.slice(0 , -2 )

另外推荐个web页面上创建文件下载链接的JS工具:FileSaver.js

Axios下载docx 显示文件无法打开和文件损坏相关推荐

  1. ftp上传服务器再次下载打开提示文件损坏

    Linux向ftp服务器put上传, 通过浏览器ftp://1.1.1.1也能看到上传的文件 但是再下载下来时,打开,提示损坏,尝试了xls,csv,tar.gz几个格式,只有csv稍好点,还能打开, ...

  2. mac 您没有权限打开应用程序_Mac应用程序无法打开或文件损坏的解决方法

    很多用户在安装Mac软件的时候,经常会遇到提示"xxx.app已损坏,打不开.您应该将它移到废纸篓"或"打不开的xxx.app,因为它来自身份不明的开发者",如 ...

  3. Mac应用程序无法打开或文件损坏的处理方法

    很多用户在安装Mac软件的时候,经常会遇到提示"xxx.app已损坏,打不开.您应该将它移到废纸篓"或"打不开的xxx.app,因为它来自身份不明的开发者",如 ...

  4. excel文件无法打印提示内存不足_Mac提示文件已损坏?Mac应用程序无法打开或文件损坏的处理方法...

    很多用户在安装Mac软件的时候,经常会遇到提示"xxx.app已损坏,打不开.您应该将它移到废纸篓"或"打不开的xxx.app,因为它来自身份不明的开发者",如 ...

  5. Mac应用程序无法打开或文件损坏的处理方法,Mac任何来源开启教程

    Mac应用程序无法打开或文件损坏的处理方法,Mac任何来源开启教程 您是否安装软件遇到提示 " XXX.app 已损坏,打不开.您应该将它移到废纸篓 " 或 " 打不开 ...

  6. PHP下载docx文档打开时显示 word2007无法打开Office OpenXML 文件

    症状 我自己的PHP,把word文档存入数据库后,再从数据库下载成docx文件:当打开该文件时(Word2007),出现错误提示:"无法打开Office OpenXML 文件 文件名, 因为 ...

  7. Outlook无法打开 .ost文件损坏,卸载重装也恢复不了

    updated: 2020.01.23 一. 问题描述 在桌面版outlook上创建新的规则,由于邮件缓存太大,应用程序卡死,强制关闭后再重启提示 "Errors have been det ...

  8. Mac安装应用程序时提示无法打开或文件损坏的处理方法

    相信不少mac电脑用户在安装应用程序时经常会遇到"xxx.app已损坏,打不开.您应该将它移到废纸篓"或"打不开的xxx.app,因为它来自身份不明的开发者"的 ...

  9. mac 您没有权限打开应用程序_Mac应用程序无法打开或文件损坏的处理方法

    良多用户在安装Mac软件的时候,经常会遇到提示"xxx.app已损坏,打不开.您应该将它移到废纸篓"或"打不开的xxx.app,因为它来本身份不明的开发者",如 ...

最新文章

  1. 在JavaScript中找到数组的最小/最大元素
  2. 比特币在贬值但是不会出局
  3. 在Linux上如何安装Oracle数据库
  4. [Eclipse]代码已被写入关于如何切换到unix在新行
  5. 微型计算机和pc的概念,微型计算机IBM-PC(0520)系统原理及应用
  6. 【pytest】Hook 方法之 pytest_addoption :注册命令行参数
  7. python db2 linux 安装,python安装DB2模块
  8. 微软将弃用 System.Data.OracleClient
  9. 大数据之路阿里巴巴实践
  10. SQL 完整的实体性—联系图
  11. wps将批量数字转换成条形码_wps批量形成条码
  12. word文档去掉复制过来的背景颜色
  13. java中线程池的实现原理:七参、四策
  14. android n自带游戏,Android N玩游戏更快了 但国产ROM要等很久
  15. RPM REBUILD
  16. OpenStack云计算与HPC之一: 前言和OpenStack与HPC虚拟化
  17. 2016年linux认证考试,2016年Linux认证考试复习要点辅导
  18. 城市C友会【官方牵头更多的线下交流的机会,你有怎样的期待?】
  19. SQL中的WHILE循环使用
  20. yjp-9.5.6使用

热门文章

  1. Oracle按时间分组查询
  2. 扣扣邮箱的协议服务器地址,使用SMTP协议,通过QQ邮箱发送邮件
  3. Microsoft修复工具
  4. 2012-Linux-18(使U-BOOT能正确引导LINUX for 1_20 error,but...)-1
  5. 【Python】pd.read_excel应用
  6. 函数周期表丨值丨数学函数系列
  7. 人工智能课程系列1-汇总整理
  8. 净空法师:同修净土与般若
  9. 计算机科学与未解决的难题,NP(未解难题)_百度百科
  10. 干货!毫米波雷达超强解读