<body> <br /> <br /> <form action="${pageContext.request.contextPath}/user/upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value=" 上 传 " /> </form> <br /> <br /> <br /> <a href="${pageContext.request.contextPath}/user/download?fileName=${fileUrl}">下载文件</a> </body>
后台代码
/** * * @author */ @Controller @RequestMapping("/user") public class UserController extends BaseController { @Autowired private UserService userService; /** * 跳转用户文件上传页面 * * @return */ @RequestMapping(value = "/uploadPage") public String uploadPage() { return "/admin/newFile"; } //上传文件 @RequestMapping(value = "/upload") public String upload(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request, ModelMap model) { System.out.println("开始"); // getRealPath("/") 得到的就是你tomcat下webapps下的项目根路径 String path = request.getSession().getServletContext().getRealPath("upload"); String fileName = file.getOriginalFilename(); // String fileName = new Date().getTime()+".jpg"; System.out.println(path); File targetFile = new File(path, fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } // 保存 try { file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } model.addAttribute("fileUrl", fileName); return "/admin/newFile"; } //下载文件 @RequestMapping("/download") public String download(String fileName, HttpServletRequest request, HttpServletResponse response) { response.setCharacterEncoding("utf-8"); response.setContentType("multipart/form-data"); response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); try { String path = request.getSession().getServletContext().getRealPath("upload") + File.separator; String temp = request.getParameter("fileName"); InputStream inputStream = new FileInputStream(new File(path + fileName)); OutputStream os = response.getOutputStream(); byte[] b = new byte[2048]; int length; while ((length = inputStream.read(b)) > 0) { os.write(b, 0, length); } // 这里主要关闭。 os.close(); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } // 返回值要注意,要不然就出现下面这句错误! return null; } }