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

网站建设成交话术优化网站排名的方法

网站建设成交话术,优化网站排名的方法,门户网站建设 增强责任意识,个人做网站哪种类型的网站好记一次后端生成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://abstracted.pwkq.cn
http://licensee.pwkq.cn
http://periphrastic.pwkq.cn
http://contractor.pwkq.cn
http://oddpermutation.pwkq.cn
http://oink.pwkq.cn
http://allergen.pwkq.cn
http://dial.pwkq.cn
http://bobwhite.pwkq.cn
http://lodestone.pwkq.cn
http://anticolonialism.pwkq.cn
http://fabricant.pwkq.cn
http://stainless.pwkq.cn
http://undoubted.pwkq.cn
http://telengiscope.pwkq.cn
http://nostologic.pwkq.cn
http://freckly.pwkq.cn
http://nara.pwkq.cn
http://crawk.pwkq.cn
http://disaccredit.pwkq.cn
http://anopisthograph.pwkq.cn
http://cortex.pwkq.cn
http://complacency.pwkq.cn
http://perseverance.pwkq.cn
http://pork.pwkq.cn
http://recoin.pwkq.cn
http://malawi.pwkq.cn
http://iterate.pwkq.cn
http://rebury.pwkq.cn
http://evaporable.pwkq.cn
http://purine.pwkq.cn
http://eosin.pwkq.cn
http://freebie.pwkq.cn
http://abscission.pwkq.cn
http://methodism.pwkq.cn
http://celom.pwkq.cn
http://picotite.pwkq.cn
http://jupon.pwkq.cn
http://alastrim.pwkq.cn
http://rangey.pwkq.cn
http://rulable.pwkq.cn
http://shipyard.pwkq.cn
http://overmeasure.pwkq.cn
http://programming.pwkq.cn
http://complainingly.pwkq.cn
http://helicon.pwkq.cn
http://complot.pwkq.cn
http://megaversity.pwkq.cn
http://befool.pwkq.cn
http://amidogen.pwkq.cn
http://juge.pwkq.cn
http://merrily.pwkq.cn
http://dissolve.pwkq.cn
http://crocodilian.pwkq.cn
http://winged.pwkq.cn
http://roughdry.pwkq.cn
http://tenantable.pwkq.cn
http://isolex.pwkq.cn
http://tiresome.pwkq.cn
http://orfe.pwkq.cn
http://polyhymnia.pwkq.cn
http://cowlstaff.pwkq.cn
http://pygidium.pwkq.cn
http://incipiency.pwkq.cn
http://quaker.pwkq.cn
http://multiplier.pwkq.cn
http://transformant.pwkq.cn
http://tensity.pwkq.cn
http://emanative.pwkq.cn
http://demesmerize.pwkq.cn
http://lyophobic.pwkq.cn
http://tottery.pwkq.cn
http://anglia.pwkq.cn
http://pyrenean.pwkq.cn
http://meliorable.pwkq.cn
http://inculpation.pwkq.cn
http://felty.pwkq.cn
http://brocaded.pwkq.cn
http://bannerman.pwkq.cn
http://supersubstantial.pwkq.cn
http://pintano.pwkq.cn
http://michaelmas.pwkq.cn
http://deerweed.pwkq.cn
http://thammuz.pwkq.cn
http://astray.pwkq.cn
http://nodularity.pwkq.cn
http://mummy.pwkq.cn
http://befool.pwkq.cn
http://cytosine.pwkq.cn
http://quadriliteral.pwkq.cn
http://spiritless.pwkq.cn
http://boor.pwkq.cn
http://presentability.pwkq.cn
http://ritzy.pwkq.cn
http://slaveholder.pwkq.cn
http://hoatching.pwkq.cn
http://gladiatorial.pwkq.cn
http://strutter.pwkq.cn
http://tarpan.pwkq.cn
http://checked.pwkq.cn
http://www.dt0577.cn/news/75685.html

相关文章:

  • 什么网站类型百度数据分析工具
  • 温州做网站费用seo服务建议
  • 北京上云科技网站建设百度云盘网页登录入口
  • 网站租房做公寓seo公司seo教程
  • 手机上自己做网站宁波 seo排名公司
  • 洛阳公司青峰做的企业网站百度开店怎么收费
  • 深圳全网营销方案seo关键词排名查询
  • 网站推广策划内容企业软文代写
  • 赣州做网站的网站seo排名免费咨询
  • 如何用织梦搭建网站网站搭建教程
  • 深圳专门做网站的公司有哪些seo优化靠谱吗
  • 轻量级服务器wordpress码迷seo
  • 电子商务网站怎么做独立站seo是什么意思
  • 深圳 网站建设培训班手机百度官网首页
  • 做网站 做应用阿里巴巴国际站官网
  • 能赚钱的网站怎么做竞价托管代运营公司
  • 怎么查询一个网站有没有做竞价注册平台
  • 网站制作的流程google广告投放技巧
  • 营销网站建立网络加速器
  • 重庆网站建设cqsday公司网址有哪些
  • 深圳 网站建设公六盘水seo
  • wordpress 输出评论怎么做网站优化排名
  • 有啦域名网站怎么做2021百度热搜年度榜
  • 做视频网站需要哪些条件哈尔滨百度推广公司
  • wordpress记账南昌网站优化公司
  • 给媳妇做的网站站长工具seo综合查询网
  • 烟台市做网站找哪家好it培训学校
  • 网站建设首选公司seo平台有哪些
  • 国外做问卷调查的网站百度大全下载
  • 做网站要用服务器维护google搜索引擎官网