文件下载
ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文
使用ResonseEntity实现下载文件的功能
@RequestMapping("/testDown") public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{ // 获取ServletContext对象 ServletContext servletContext = session.getServletContext(); // 获取服务器中文件的真实路径 该文件在服务器中的路径 String realPath = servletContext.getRealPath("/static/img/1.jpg"); // 创建输入流 InputStream is = new FileInputStream(realPath); // 创建字节数组 byte[] bytes = new byte[is.available()]; // 将流读到字节数组中 is.read(bytes); // 创建HttpHeaders对象设置响应头信息 MultiValueMap<String, String> headers = new HttpHeaders(); // 设置要下载方式以及下载文件的名字 headers.add("Content-Disposition", "attachment;filename=1.jpg"); // 设置响应状态码 HttpStatus statusCode = HttpStatus.OK; // 创建ResponseEntity对象 ResponseEntity<byte[]> responseEntity = new ResopnseEntity<>(bytes, headers, statusCode); // 关闭输入流 in.close(); return responseEntity; }
文件上传
<!-- 添加文件上传依赖 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
<!-- 配置文件上传解析器 --> <!-- 由于MultipartResolver是一个接口,在这里我们要配置一个实现类 --> <bean id=" multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
先在前端声明ContentType="multipart/form-data"
<form action="test/upload" method="post" enctype="multipart/form-data"></form>
@ReqeuestMapping("/test/upload") public String testUpload(MultipartFile file, HttpSession session){ // 获取上传文件的文件名 String fileName = file.getOriginalFilename(); // 获取ServletContext对象 ServletContext servletContext = session.getServletContext(); // 获取当前工程下的目标目录的真实路径 String filePath = servletContext.getRealPath("file"); // 创建filePath所对应的File对象 File file = new File(filePath); // 判断file所对应的目录是否存在 if(!exists()){ // 不存在就创建 file.mkdir(); } String targetPath = filePath + File.separator + fileName; // 上传文件 // 将源文件复制到目标位置 file.transferTo(new File(targetPath)); }