@RequestMapping("/test/down") public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException { //获取ServletContext对象 ServletContext servletContext = session.getServletContext(); //获取服务器中文件的真实路径 String realPath = servletContext.getRealPath("img"); realPath = realPath + File.separator + "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 ResponseEntity<>(bytes, headers, statusCode); //关闭输入流 is.close(); return responseEntity; }
只需要改下服务器的路径和下载后保存到本地的文件名
String realPath = servletContext.getRealPath("xxx"); realPath = realPath + File.separator + "xxx.jpg";
headers.add("Content-Disposition", "attachment;filename=xxx.jpg");
记得页面中添加
<form th:action="@{test/up}" method="post" enctype="multipart/form-data"> <input type="file" name="photo" id=""> <input type="submit" value="上传"> </form>