当我们设定可以下载文件这个功能的时候(在用SpringMVC框架的前提下),Controller文件是这么写的:
@RequestMapping("/download")
public void download(String filename, HttpSession session, HttpServletResponse resp){
System.out.println(filename);
String path=session.getServletContext().getRealPath("/WEB-INF/upload/");
File file=new File(path,filename);
try {
resp.setHeader("content-disposition","attachment;filename="+filename);
StreamUtils.copy(new FileInputStream(file),resp.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
这样子写,设定的名字结果不会是默认的download,而是文件原来的名字(我上传这个文件的时候名字是123.jpg),结果图为
但是如果我们要想下载下来的文件名默认为中文怎么办,就需要插入以下代码:
@RequestMapping("/download")
public void download(String filename, HttpSession session, HttpServletResponse resp){
System.out.println(filename);
String path=session.getServletContext().getRealPath("/WEB-INF/upload/");
File file=new File(path,filename);
try {
filename="成龙";
filename=new String(filename.getBytes("utf-8"),"iso8859-1");
resp.setHeader("content-disposition","attachment;filename="+filename);
StreamUtils.copy(new FileInputStream(file),resp.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
其中`
filename="成龙";
filename=new String(filename.getBytes("utf-8"),"iso8859-1");`
这两个就是需要插入的代码
首先需要个filename,设定filename里面需要什么中文,然后再设置中文的编码格式utf-8,iso8859-1,这样设定后,结果如图
完成