springmvc中下载中文文件名称为下划线的解决方法
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章跟大家分析一下"springmvc中下载中文文件名称为下划线的解决方法"。内容详细易懂,对"springmvc中下载中文文件名称为下划线的解决方法"感兴趣的朋友可以跟着小编的思路慢慢深入来阅读
千家信息网最后更新 2025年01月18日springmvc中下载中文文件名称为下划线的解决方法", "
这篇文章跟大家分析一下"springmvc中下载中文文件名称为下划线的解决方法"。内容详细易懂,对"springmvc中下载中文文件名称为下划线的解决方法"感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习"springmvc中下载中文文件名称为下划线的解决方法"的知识吧。
springmvc下载中文文件名称为下划线
springboot项目中,在下载文件的时候,通过封装ResponseEntity,将文件流写入body,这种下载文件的方式,造成了下载的文件名为正文显示为下划线的形式;
这个问题很好解决
直接将输入的文件名的编码格式定义成GBK格式;
如下代码
public static ResponseEntityexport(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("