下载文件提示“部分内容有问题”或“文件格式或文件扩展名无效”

前端发送请求下载excel文件,总是提示“部分内容有问题”或“文件格式或文件扩展名无效”。

这两个错误的原因是文件内容与文件格式不(完全)匹配。

前端发送请求 -> 后端响应数据 -> 前端处理响应数据

1. 在这个过程中,前端发送的请求和其他请求一样,没有什么特殊的。

2. 后端响应数据:数据库检索数据后,要按照指定格式相应给后端。

        以使用 apache poi 导出excel文件为例,如果框架使用不当,那么会导致文件内容有问题,即提示“部分内容有问题”。除此之外,要设置 响应头 中的 content-type 与文件内容相匹配,否则也会提示或报错,如 XSSFWorkbook 对应 .xlsx 格式,content-type 要设置为 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet。

       我们现在开发往往会将返回结果封装一个响应对象(如 ResponseResult),习惯性的返回一个包含状态的对象。当我们需要下载文件时,由于文件是二进制流,不能直接放在响应对象里(无法解析)。往往我们会将文件直接写入 响应体 ,通过 HttpServletResponse 对象调用 getOutputStream 方法获取输出流,将文件内容写入该输出流中。

3. 前端接收到响应处理响应数据时,要注意与后端设置的文件类型相同。以使用 Blob 接收响应数据为例,要设置 type 与响应头 content-type 一致。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值