1、文件下载
使用ResponseEntity实现下载文件的功能:
@RequestMapping(value = "/testDown")
public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{
// 获取servletContext对象
ServletContext servletContext = session.getServletContext();
// 获取服务器文件的真实路径
String realPath = servletContext.getRealPath("/static/img/1.png");
// 创建输入流
FileInputStream is = new FileInputStream(realPath);
// 创建字节数组
byte[] bytes = new byte[is.available()];
// 将流读到字节数组中
is.read(bytes);
// 创建HttHeaders对象设置相应头信息
MultiValueMap<String, String> headers = new HttpHeaders();
// 设置要下载方式以及下载文件的名字
headers.add("Content-Disposition", "attachment;filename=1.png");
// 设置相应状态码
HttpStatus statusCode = HttpStatus.OK;
// 创建ResponseEntity对象
ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, headers, statusCode);
is.close();
return responseEntity;
}
2、文件上传
文件上传要求form表单的请求方式必须为post,并且添加属性enctype="multipart/form-data"
SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息
上传步骤:
a 添加依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
b 在SpringMVC的配置文件中添加配置
配置文件中一定要写id,要不然调用不到这个bean
<!--配置文件上传解析器,将上传的文件封装为MultipartFile-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
c 完成控制层
@PostMapping(value = "/testUp")
public String testUp(MultipartFile photo, HttpSession session) throws IOException {
String filename = photo.getOriginalFilename();
String suffixName = filename.substring(filename.lastIndexOf("."));
String uuid = UUID.randomUUID().toString();
filename = uuid + suffixName;
System.out.println(photo.getName());
System.out.println(photo.getOriginalFilename());
ServletContext servletContext = session.getServletContext();
String path = servletContext.getRealPath("photo");
File file = new File(path);
if(!file.exists()){
file.mkdir();
}
String finalPath = path + File.separator + filename;
photo.transferTo(new File(finalPath));
return "success";
}
}