springMVC文件的上傳與下載
阿新 • • 發佈:2017-07-14
不存在 ons axu max iou tac array header available
1.文件上傳
springmvc中只需要配置上傳組件,然後配合使用MultipartFile,就可以輕松實現單個文件上傳和批量上傳,而且上傳的文件類型和大小都可以在springmvc 配置文件中配置。
pom文件中增加:
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${fileupload.version}</version> </dependency>
springMVC配置文件中增加multipartResolver:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize"> <value>40000000</value><!-- 文件最大上傳限制 40M以內 --> </property> <property name="maxInMemorySize" value="2048" /> <property name="defaultEncoding"> <value>UTF-8</value> </property> </bean>
上傳代碼:
@RequestMapping(value = "/fileUpload", method = RequestMethod.POST) public Result fileUpload(HttpServletRequest request) { Result result= new Result(); List<MultipartFile> fileList = getFile(request); return result; } /** * 從request中獲取文件 * @param request * @return */ public static List<MultipartFile> getFile(HttpServletRequest request) { List<MultipartFile> result = null; try { result = new ArrayList<MultipartFile>(); MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = mRequest.getFileMap(); for (Iterator<Map.Entry<String, MultipartFile>> it = fileMap.entrySet().iterator(); it.hasNext();) { Map.Entry<String, MultipartFile> entry = it.next(); MultipartFile mFile = entry.getValue(); String fileSizeLimit = PropertyUtils.getConfig("fileSizeLimit");//獲取配置文件中的文件大小最大限制 if (mFile.getSize() > Long.parseLong(fileSizeLimit)) { String fname = mFile.getOriginalFilename(); throw new Exception(fname + "文件大小超過最大限制"); } result.add(mFile); } } catch (Exception e) { e.printStackTrace(); } return result; }
2.文件下載
基於ResponseEntity實現
@RequestMapping("/testHttpMessageDown") public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException { File file = new File("E://123.jpg"); byte[] body = null; InputStream is = new FileInputStream(file); body = new byte[is.available()]; is.read(body); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Disposition", "attchement;filename=" + file.getName()); HttpStatus statusCode = HttpStatus.OK; ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode); return entity; }
Java通用下載實現(這裏用的GET方法方便瀏覽器測試)
@RequestMapping(value = "/fileDownload", method = RequestMethod.GET) public Result fileDownload(@RequestParam String filePath, HttpServletRequest request, HttpServletResponse response) { Result result = new Result(); File file = new File("E://123.jpg"); if (!file.exists()) { System.Out.println("文件不存在"); return result; } try { response.reset(); //設置ContentType response.setContentType("application/octet-stream; charset=utf-8"); String fileName = new String(file.getName().getBytes("utf-8"), "ISO-8859-1"); //處理中文文件名中文亂碼問題 response.setHeader("Content-Disposition", "attachment; filename=" + fileName); IOUtils.copy(new FileInputStream(file), response.getOutputStream()); } catch (Exception e) { System.Out.println("文件下載失敗"); return result; } return result; }
springMVC文件的上傳與下載