1、准备上传下载的api组件
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
2、编写前台上传表单
<body>
请点击下载:<a href="user/download?filename=moni.jpg">moni.jpg</a>
</body>
3、编写controller层(在conreoller层拼接附件名字和所在文件夹位置(path),创建输出流直接写入response中)
/** * 文件下载 * @throws IOException */ @RequestMapping(value="/download",method=RequestMethod.GET) public void download(@RequestParam(value="filename")String filename, HttpServletRequest request, HttpServletResponse response) throws IOException { //模拟文件,myfile.txt为需要下载的文件 String path = request.getSession().getServletContext().getRealPath("statics\upload")+"\"+filename; //获取输入流 InputStream bis = new BufferedInputStream(new FileInputStream(new File(path))); //转码,免得文件名中文乱码 filename = URLEncoder.encode(filename,"UTF-8"); //设置文件下载头 response.addHeader("Content-Disposition", "attachment;filename=" + filename); //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型 response.setContentType("multipart/form-data"); BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); int len = 0; while((len = bis.read()) != -1){ out.write(len); out.flush(); } out.close(); }