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

专业网站设计建站网店运营工作内容

专业网站设计建站,网店运营工作内容,提供手机网站建设企业,北京定制网站开发公司遇到的问题: 文件下载后文件一直被破坏,无法正常打开文件名乱码,如图 刚开始一直在纠结,是不是后端没有写对,然后导致下载不能使用 后来搜索了一些资料,发现后端没什么问题 然后就开始找到其他项目对比…

遇到的问题:

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

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

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

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

哈哈哈哈哈哈哈

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

下载功能后端代码

    @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.yidumall.com/news/16734.html

相关文章:

  • 精品资料网站哪些平台可以打小广告
  • 网站建设的工作人员网站收录工具
  • 推荐常州模板网站建设关键词优化步骤简短
  • wordpress搬家后错乱武汉网站建设优化
  • 网页制作软件免费吗seo网络推广是干嘛的
  • 做商城类网站空间怎么买关键词优化排名哪家好
  • 苏州本地网站有哪些域名注册 万网
  • 论坛备案网站名称网络营销实施方案
  • 门户网站建设与管理办法指数基金投资指南
  • 溧水区住房建设局网站搜索引擎营销的模式有哪些
  • 做新闻网站需要注册第几类商标重庆百度小额贷款有限公司
  • 网站建立步骤电商seo引流
  • 阿雷网站建设app001推广平台官网
  • 建好网站后如何向里面加东西百度官网app下载安装
  • 住房和城乡建设部监理工程师网站典型十大优秀网络营销案例
  • 外贸常用的网站seo模拟点击软件
  • 网站建设维护学什么杭州排名优化公司电话
  • 网站备案在线注销seo顾问赚钱吗
  • 建湖专业做网站的公司企业邮箱怎么申请
  • 广东网络公司网站东莞网站设计公司
  • 自己做个网站好还是做别人会员好济南seo优化外包
  • 怎么查网站建设时间百度竞价排名公司
  • 欧美做愛网站A级俄国搜索引擎yandex入口
  • 建e室内设计网专业的室内设计seo建站公司
  • 做护肤品好的网站推广app赚佣金
  • 网站编辑是做什么seo顾问
  • 桂林手机网站制作做游戏推广怎么找客户
  • 网站申请建设网站营销策略有哪些
  • 深圳高端做网站公司抖音推广运营公司
  • 网站怎么做点击广告郑州搜索引擎优化