springmvc文件下载
文件下载
使用NIO完成文件夹在几步轻松搞定
package com.sz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Controller
@RequestMapping("/download")
public class FileDownloadController {
private String downloadPath = "D:" + File.separator;
// 下载D盘的reposi.rar
@RequestMapping("/m1")
public String m1(HttpServletResponse response){
String fileName = "reposi.rar";
// if()
// 构建FIle
// 构建一个Path对象
Path path = Paths.get(downloadPath,fileName);
if(Files.exists(path)){
// 如果路径对象存在,可以下载
// 通过response响应出去
// 设置好文件类型
response.setContentType("application/rar");
// 添加头信息,指定浏览器行为
response.addHeader("Content-Disposition",
"attachment; filename=像我这么帅的人当然是主角.rar");
// 准备拷贝
try {
Files.copy(path,response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
注意,如果是英文名称当然没问题,中文就尴尬了,必须要额外处理下
先以U8解开,然后以ISO8859-1重组
package com.sz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Controller
@RequestMapping("/download")
public class FileDownloadController {
private String downloadPath = "D:" + File.separator;
// 下载D盘的reposi.rar
@RequestMapping("/m1")
public String m1(HttpServletResponse response){
String fileName = "reposi.rar";
// if()
// 构建FIle
// 构建一个Path对象
Path path = Paths.get(downloadPath,fileName);
if(Files.exists(path)){
// 如果路径对象存在,可以下载
// 通过response响应出去
// 设置好文件类型
response.setContentType("application/rar");
// 添加头信息,指定浏览器行为
response.setCharacterEncoding("UTF-8");
String newName = null;
try {
newName = new String("像我这么帅的人当然是主角".getBytes("UTF-8"),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.addHeader("Content-Disposition",
"attachment; filename=" +
newName+".rar");
// 准备拷贝
try {
Files.copy(path,response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}