文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

springmvc中下载中文文件名称为下划线的解决方法

2023-06-29 01:03

关注

这篇文章跟大家分析一下“springmvc中下载中文文件名称为下划线的解决方法”。内容详细易懂,对“springmvc中下载中文文件名称为下划线的解决方法”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“springmvc中下载中文文件名称为下划线的解决方法”的知识吧。

springmvc下载中文文件名称为下划线

springboot项目中,在下载文件的时候,通过封装ResponseEntity,将文件流写入body,这种下载文件的方式,造成了下载的文件名为正文显示为下划线的形式;

这个问题很好解决

直接将输入的文件名的编码格式定义成GBK格式;

如下代码

public static ResponseEntity<FileSystemResource> export(File file) throws UnsupportedEncodingException {        if (file == null) {            return null;        }        //这个位置对文件名进行编码        String fileName = new String (file.getName().getBytes("GBK"),"ISO-8859-1");        HttpHeaders headers = new HttpHeaders();        headers.add("Cache-Control", "no-cache, no-store, must-revalidate");        headers.add("Content-Disposition", "attachment; filename=" +fileName);        headers.add("Pragma", "no-cache");        headers.add("Expires", "0");        headers.add("Last-Modified", new Date().toString());        headers.add("ETag", String.valueOf(System.currentTimeMillis()));        return ResponseEntity                .ok()                .headers(headers)                .contentLength(file.length())                .contentType(MediaType.parseMediaType("application/octet-stream"))                .body(new FileSystemResource(file));    }

java生成文件名时汉字变为下划线?

public static void exportToExcel(String uid, String name, String htmlText, HttpServletRequest request, HttpServletResponse response) {      htmlText = htmlText.replaceFirst("<table>", "<tableFirst>");      htmlText = htmlText.replaceAll("<table>",            "<table cellpadding=\"3\" cellspacing=\"0\"  border=\"1\" rull=\"all\" style=\"border-collapse: collapse\">");      htmlText = htmlText.replaceFirst("<tableFirst>", "<table>");      try (OutputStream out = response.getOutputStream()) {         String fileName = name+ "_" + DateUtils.getNow("yyyyMMddHHmmss");//       fileName = new String(fileName.getBytes(),"utf-8")+ ".xls";         if ("large".equals(htmlText)) {            ReportingPo report = reportingService.getByUid(uid);            Map<String, Object> formParameters = generationService.getFormParameters(request.getParameterMap(), report.getDataRange());            ReportTable reportTable = generationService.getReportTable(report, formParameters);            htmlText = reportTable.getHtmlText();         }//       response.reset();         response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"),"iso-8859-1")+ ".xls");//       response.setHeader("Content-Disposition", String.format("attachment; filename=%s", fileName));         response.setContentType("application/vnd.ms-excel; charset=utf-8");         response.setCharacterEncoding("utf-8");         response.addCookie(new Cookie("fileDownload", "true"));//       out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF }); // 生成带bom的utf8文件         out.write(htmlText.getBytes("utf-8"));         out.flush();      } catch (Exception ex) {         throw new RuntimeException(ex);      }   }

注意这里两个编码

new String(fileName.getBytes("utf-8"),"iso-8859-1")+ ".xls"

关于springmvc中下载中文文件名称为下划线的解决方法就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下编程网网站!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯