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

专业网站设计建站长春seo

专业网站设计建站,长春seo,浙江网站建设公司电话,大连嘉良建设有限公司网站遇到的问题: 文件下载后文件一直被破坏,无法正常打开文件名乱码,如图 刚开始一直在纠结,是不是后端没有写对,然后导致下载不能使用 后来搜索了一些资料,发现后端没什么问题 然后就开始找到其他项目对比…

遇到的问题:

  • 文件下载后文件一直被破坏,无法正常打开
  • 文件名乱码,如图
    在这里插入图片描述

刚开始一直在纠结,是不是后端没有写对,然后导致下载不能使用

后来搜索了一些资料,发现后端没什么问题

然后就开始找到其他项目对比下载功能

哈哈哈哈哈哈哈

不会也只能靠这个方法去找问题了,就是有点笨,但总归找到了问题所在

下载功能后端代码

    @GetMapping("/annex")public void downloadAnnex(ProcessFindReqVo processFindReqVo, HttpServletResponse response) throws IOException, HttpMediaTypeNotAcceptableException {String filePath = "文件路径"; // 指定文件路径if (StringUtils.isBlank(filePath)) {return;}File file = new File(filePath);if (!file.exists()) {return;}response.setCharacterEncoding("utf-8");response.setContentType("application/octet-stream;charset=UTF-8");String fileName = URLEncoder.encode(file.getName(), StandardCharsets.UTF_8.name()).replaceAll("\\+", "%20");response.addHeader("Content-Disposition", "attachment;filename=" + fileName);byte[] buffer = new byte[(int)file.length()];FileInputStream fis = null;OutputStream os = null;try {fis = new FileInputStream(file);os = response.getOutputStream();int i = -1;while ((i = fis.read(buffer)) != -1) {os.write(buffer, 0, i);}} catch (IOException ex) {ex.printStackTrace();} finally {if (os != null) {try {os.flush();os.close();} catch (IOException e) {e.printStackTrace();}}if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}

下载功能前端代码

export async function downloadAnnex(data){const res = await axios.get(`/scm/web/monthly/download/annex?id=`+data, {responseType: 'blob'})const content = res.dataconst blob = new Blob([content], { type: 'application/octet-stream' })const contentDispositionHeader = res.headers['content-disposition'];const fileName = contentDispositionHeader.split(';').map(item => item.trim()).find(item => item.startsWith('filename=')).substr('filename='.length);let decodeName = decodeURI(fileName);if ('download' in document.createElement('a')) { // 非IE下载const elink = document.createElement('a')elink.download = decodeNameelink.style.display = 'none'elink.href = URL.createObjectURL(blob)document.body.appendChild(elink)elink.click()URL.revokeObjectURL(elink.href) // 释放URL 对象document.body.removeChild(elink)} else { // IE10+下载navigator.msSaveBlob(blob, decodeName)}
}
  • 说回刚开始的问题,下载时文件始终提示被破坏的原因:
    export async function downloadAnnex(data){这里应该使用async关键字
    const res = await axios.get请求时也应该使用await关键字,这样就可以使文件顺利下载,至于为什么还没有深究。。。(想以后研究,不知道以后还能不能想起来了😅)
  • 文件名始终乱码,就使用decodeURI(fileName);进行解码,之后就可以正确的展示中文字符了,前提时后端传输时已经设置了UTF-8的编码
http://www.15wanjia.com/news/57240.html

相关文章:

  • 专业网站制作设计公司哪家好有人看片吗免费观看视频
  • 如何做企业网站推广产品网站如何注册
  • 狮岭做包包的网站谷歌网址
  • 企业网站提交线下推广宣传方式有哪些
  • wordpress做网站怎么样seo流量排行榜神器
  • 网站添加cnzz郑州网站建设公司排行榜
  • 德州做网站建设的公司哪家好广州aso优化
  • 网站开发的方式劳动局免费培训电工
  • 网站标题权重吗做个网站
  • 做网站专题模板网页制作学习
  • 关于集团官方网站内容建设的报告网络视频营销平台
  • 网站常见 8seo云优化方法
  • 不做百度推广网站关键词被屏蔽semi final
  • 做网站投资要多少钱产品营销推广方案
  • 中文顶级域名注册官网查询seo培训课程
  • 公司网站优化推广企业网址怎么申请
  • 免费模板素材网站有哪些软文推广例子
  • 临沂建设工程质量 监督网站百度seo优化服务项目
  • 郑州做食用菌配送的网站免费收录网站推广
  • 湛江模板建站系统怎么免费创建自己的网站
  • 天津 网站建设百度指数有哪些功能
  • b2b网站分析google优化排名
  • 今日军事新闻内容摘抄seo1现在怎么看不了
  • 教育网站赏析seo关键词查询工具
  • 如何维护给做网站的客户地推app推广赚佣金
  • 做amazon当地电信屏蔽了网站seo公司优化方案
  • 网站开发文件综述2022推广app赚佣金平台
  • 三河市城乡建设局网站东莞网络营销信息推荐
  • 宝安最好的网站建设seo网站推广方案
  • 有自己域名的个人网站软文自动发布软件