需要的前奏
1需要导入的包
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency>
2 配置 spring mvc 文件上传的解析器{MultipartFile}
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
针对上传
(1)前端
<form method="post" action="/file/fileupload" enctype="multipart/form-data"> 文件名: <input type="file" name="image"> <br> <input type="submit"value="上传"> </form>
(2)后端
@Controller @RequestMapping("/file") public class FileUploadHandler { @PostMapping("/fileupload") public String fileupload(MultipartFile image,HttpServletRequest request){ if(image.getSize()>0){ String path=request.getSession().getServletContext().getRealPath("file"); String name=image.getOriginalFilename(); File file=new File(path,name); try { image.transferTo(file); request.setAttribute("path","/file/"+name); } catch (IOException e) { e.printStackTrace(); } } return "fileupload"; }
针对下载
前端
<body> <a href="/file/down/1">1.jpg</a> <a href="/file/down/2">2.jpg</a> <a href="/file/down/3 ">3.jpg</a> </body>
后端
@GetMapping("/down/{name}") public void down(@PathVariable("name") String name, HttpServletRequest request, HttpServletResponse response){ if(name!=null){ name+=".jpg"; String path=request.getSession().getServletContext().getRealPath("file"); System.out.println(path); System.out.println(name); File file=new File(path,name); OutputStream outputStream=null; if(file.exists()){ response.setContentType("application/forc-download"); response.setHeader("Content-Disposition","attachment;filename="+name); try { outputStream=response.getOutputStream(); outputStream.write(FileUtils.readFileToByteArray(file)); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); }finally { if(outputStream!=null){ try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } }