springmvc中下载中文文件名称为下划线的解决方案
程序员文章站
2022-06-16 13:06:38
目录springmvc下载中文文件名称为下划线这个问题很好解决java生成文件名时汉字变为下划线?注意这里两个编码springmvc下载中文文件名称为下划线springboot项目中,在下载文件的时候...
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"
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
推荐阅读
-
跨浏览器PHP下载文件名中的中文乱码问题解决方法
-
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
-
如何解决ASP.NET下载时的中文文件名乱码,与TXT文件中存在代码两个问题
-
跨浏览器PHP下载文件名中的中文乱码问题解决方法_php技巧
-
springmvc中下载中文文件名称为下划线的解决方案
-
php-linux apache 服务器 中文的文件名下载 404 但是在ie中可以
-
跨浏览器PHP下载文件名中的中文乱码问题解决方法_php技巧
-
跨浏览器PHP下载文件名中的中文乱码问题解决方法,
-
跨浏览器PHP下载文件名中的中文乱码问题解决方法_PHP
-
跨浏览器PHP下载文件名中的中文乱码问题解决方法_PHP