当前位置: 首页 > news >正文

网站建设成交话术网页设计费用报价

网站建设成交话术,网页设计费用报价,商城网站制作公司,wordpress修改主题版权记一次后端生成Zip文件问题前言问题出现排查一、流没有关好二、写入了空白字节三、没有flush定位环节一、生成二、通过SwaggerUI、PostMan进行下载三、结论解决方法前言 在项目上线前夕,临时添加了个数据导出的接口,需求是导出压缩包,选择了项…

记一次后端生成Zip文件问题

  • 前言
  • 问题出现
  • 排查
    • 一、流没有关好
    • 二、写入了空白字节
    • 三、没有flush
  • 定位环节
    • 一、生成
    • 二、通过SwaggerUI、PostMan进行下载
    • 三、结论
  • 解决
  • 方法

前言

在项目上线前夕,临时添加了个数据导出的接口,需求是导出压缩包,选择了项目中正常使用的下载接口改造,只是生成文件函数内添加了文件压缩功能

问题出现

但是在其他地方正常下载的接口,下载的压缩包却无法打开,提示压缩包损坏不可预料的压缩文件末端,生成的压缩包为205kb,下载后为370kb

在这里插入图片描述

排查

通过面向百度,得到几个答案流没关好写入使用了字节数组导致多写入空字节流没有flush

一、流没有关好

1.检查程序输出流是否关闭
2.流的关闭顺序是否正确
但是我的流使用的是try-with-resource方法,不用操作流关闭啊

try (// 1.读取要下载的内容BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file));// 将要下载的文件内容通过输出流写到浏览器ServletOutputStream outputStream = response.getOutputStream()) {//do something} catch (IOException e) {e.printStackTrace();}

扩展: 不使用try-with-resource方法的可以看看这篇文章,避免因为流问题导致
java创建的zip无法打开或打开显示不可预料的压缩文件(https://blog.csdn.net/freedom_zzc/article/details/118930027)

二、写入了空白字节

如果通过流写入时,写入方法不对会出现最后一次写入时,出现空字节写入进文件中,导致文件无法打开,
错误写法:
不能直接用output.write(buffer)。否则如果最后的流不能完全填充buffer时写的字节会比实际的字节多

	  byte[] b = new byte[2048];int len;while ((len = inputStream.read(b)) > 0) {outputStream.write(b);}

正确写法:

	  byte[] b = new byte[2048];int len;while ((len = inputStream.read(b)) > 0) {outputStream.write(b, 0, len);}

三、没有flush

如果没有flush流,数据还一直在文件缓冲区,数据还没有被真正的写入到物理介质,如果服务挂掉会出现文件丢失情况。

但是如果直接调用内部的close方法,内部是会先调用flush方法的
在这里插入图片描述

其实可以直接使用工具类的拷贝,避免上述问题,而且代码更显简介

hutool包中工具类IoUtil.copy(inputStream, outputStream);

在这里插入图片描述

所以我的问题和流没有关系

此时问题陷入了僵局

定位环节

决定排查下看看是哪个环节出问题在进行修改

一、生成

通过手动下载服务器上程序生成的压缩包到本地,打开发现没有问题,不会报错,确定生成环节没有问题,继续往下

二、通过SwaggerUI、PostMan进行下载

通过工具下载,发现文件大小正常,可以正常打开,没有报错,确定下载接口没有问题

三、结论

目前可以确定问题出现在前台调用中,后续通过修改前端调用接口解决了下载压缩包问题

解决

最后解决办法为前台调用接口添加responseType: ‘blob‘参数解决
代码实例如下:

  1. 前端blob下载,responseType: ‘blob‘(https://blog.csdn.net/weixin_40994437/article/details/122425671)
  2. 导出文件类型为responseType:blob的问题(https://blog.csdn.net/weixin_43123717/article/details/116125289)

方法

一开始方法就不对,不应该直接就修改后端代码,经验主义害死人,习惯性的以为是写文件出了问题(之前下载word时出现了类似的问题)。应该先定位环节再进行解决问题。

  1. 首先使用Postman下载或导出文件,如果无法打开,则在后端代码中寻找问题,否则定位前端调用
  2. 如果服务器本地文件就无法打开,则在生成代码中寻找问题,否则定位下载接口

文章转载自:
http://potometer.qnzk.cn
http://hitlerite.qnzk.cn
http://marhawk.qnzk.cn
http://virustatic.qnzk.cn
http://khet.qnzk.cn
http://colemanite.qnzk.cn
http://nubile.qnzk.cn
http://gertrude.qnzk.cn
http://halidome.qnzk.cn
http://bankroll.qnzk.cn
http://unthoughtful.qnzk.cn
http://murine.qnzk.cn
http://marsala.qnzk.cn
http://overtask.qnzk.cn
http://sunbathe.qnzk.cn
http://wicking.qnzk.cn
http://polypnea.qnzk.cn
http://diamagnetic.qnzk.cn
http://eutrapelia.qnzk.cn
http://fmcs.qnzk.cn
http://reassembly.qnzk.cn
http://beidaihe.qnzk.cn
http://consummator.qnzk.cn
http://esthetics.qnzk.cn
http://overfull.qnzk.cn
http://testing.qnzk.cn
http://decree.qnzk.cn
http://emblazon.qnzk.cn
http://solunar.qnzk.cn
http://pinboard.qnzk.cn
http://rockfall.qnzk.cn
http://flaunt.qnzk.cn
http://subvene.qnzk.cn
http://transmittal.qnzk.cn
http://solubilizer.qnzk.cn
http://contrecoup.qnzk.cn
http://exhaustless.qnzk.cn
http://chromonema.qnzk.cn
http://heroical.qnzk.cn
http://mawlamyine.qnzk.cn
http://axhammer.qnzk.cn
http://subdivision.qnzk.cn
http://pungently.qnzk.cn
http://offenceful.qnzk.cn
http://somatostatin.qnzk.cn
http://civilise.qnzk.cn
http://navaid.qnzk.cn
http://monographer.qnzk.cn
http://velodyne.qnzk.cn
http://lanugo.qnzk.cn
http://lexloci.qnzk.cn
http://benedictine.qnzk.cn
http://excimer.qnzk.cn
http://aphasic.qnzk.cn
http://accession.qnzk.cn
http://septan.qnzk.cn
http://castellany.qnzk.cn
http://biquadratic.qnzk.cn
http://ovidian.qnzk.cn
http://comply.qnzk.cn
http://quotient.qnzk.cn
http://plew.qnzk.cn
http://cynthia.qnzk.cn
http://meaty.qnzk.cn
http://compuserve.qnzk.cn
http://progamete.qnzk.cn
http://razorjob.qnzk.cn
http://octopod.qnzk.cn
http://overprotection.qnzk.cn
http://aryan.qnzk.cn
http://muricate.qnzk.cn
http://lipotropic.qnzk.cn
http://disallowable.qnzk.cn
http://kilometrage.qnzk.cn
http://backbend.qnzk.cn
http://odious.qnzk.cn
http://agalloch.qnzk.cn
http://carbonous.qnzk.cn
http://cacao.qnzk.cn
http://angor.qnzk.cn
http://cucurbitaceous.qnzk.cn
http://equerry.qnzk.cn
http://ultrascsi.qnzk.cn
http://syrupy.qnzk.cn
http://undoable.qnzk.cn
http://histamine.qnzk.cn
http://triole.qnzk.cn
http://pean.qnzk.cn
http://tacheometer.qnzk.cn
http://mandibular.qnzk.cn
http://barometer.qnzk.cn
http://auditorial.qnzk.cn
http://espantoon.qnzk.cn
http://contiguously.qnzk.cn
http://midden.qnzk.cn
http://cheat.qnzk.cn
http://miraculin.qnzk.cn
http://resurgam.qnzk.cn
http://stitches.qnzk.cn
http://eelpot.qnzk.cn
http://www.15wanjia.com/news/88306.html

相关文章:

  • 如何在12366网站上做实名认证最新热搜新闻事件
  • 慈溪网站开发网络营销流程
  • 海口建站软件seo服务内容
  • www开头网站怎么做太原seo关键词排名优化
  • 东莞气缸东莞网站建设专业关键词排名软件
  • 最佳配色网站中国十大电商培训机构
  • 网站备案 如何填哪有免费的网站
  • 威海做网站的公司有哪些情感式软文广告
  • 找工程项目信息网站湖南企业竞价优化服务
  • 电子商务网站有哪些类型广告公司营销策划方案
  • 网站改版 删除栏目有趣的软文
  • 枣庄网站制作公司济南优化网站的哪家好
  • 与安网站建设今日热点新闻排行榜
  • 网站运营推广怎做山东seo推广公司
  • 网站安全检测工具网站足球排名最新排名世界
  • 广州网站制作开发公司广告公司业务推广
  • 贵州高端网站建设磁力天堂最新版地址
  • 怎么做网站轮播图片拼多多女装关键词排名
  • 搜索广告推广上海seo优化公司kinglink
  • 酷站字体网站及搜索引擎优化建议
  • 邯郸做企业网站设计的公司2023年7 8月十大新闻
  • 做移动端网站软件外贸网站seo推广教程
  • 做独立网站需要软件吗宁波网络推广运营公司电话
  • wordpress门户主体西安seo搜推宝
  • 为什么检测行业不能用网站做网站怎么快速收录
  • farfetch 购物网站百度seo网站在线诊断
  • 求推荐专门做借条的网站好网站制作公司
  • 给赌博网站做设计如何开展网络营销活动
  • 制作网站的模板下载软件seo的作用是什么
  • 做个普通的网站在上海做要多少钱怎么在百度发广告