spring mvc 文件上传:
@RequestMapping(value="/doUploadFile.do") @ResponseBody public Map<String, Object> doUploadFile(UpdateVO obj, HttpServletRequest request,HttpServletResponse response) throws Exception{ log.info("start update file.."); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); List outList = new ArrayList(); Iterator<?> itr = fileMap.entrySet().iterator(); FileInfo info = new FileInfo(); while(itr.hasNext()){ Entry<String, MultipartFile> ety = (Entry<String, MultipartFile>) itr.next(); MultipartFile file = ety.getValue(); String keyPrefix = ""; if(obj.getUploadType().equals("firmware")){ keyPrefix = Constants.FOLDER_FIRMWARE + "/" + obj.getProductKey() + "/" + obj.getModelId() + "/" + obj.getFirmwareVersion() + "/"; } else if(obj.getUploadType().equals("cameraApp")){ keyPrefix = Constants.FOLDER_CAMERAAPP + "/" + obj.getProductKey() + "/" + obj.getModelId() + "/" + obj.getCameraAppVersion() + "/"; } else if(obj.getUploadType().equals("client")){ keyPrefix = Constants.FOLDER_CLIENT + "/" + obj.getProductKey() + "/" + obj.getClientOS() + "/" + obj.getClientVersion() + "/"; } log.info("enter upload File function"); info = uploadFile(file, request,keyPrefix); } ResponseResult result= new ResponseResult(); result.setSuccess(true); result.setReturnObject("result",JSONObject.fromObject(info).toString()); return result.returnResult(); }
/***inner method***/ private FileInfo uploadFile(MultipartFile file,HttpServletRequest request,String keyPrefix) throws Exception { String dir = request.getSession().getServletContext().getRealPath("/")+ Constants.UPLOADDIR; log.info("upload file dir :{}",dir); FileInfo info = new FileInfo(); if (!file.isEmpty()) { // upload file to server first String uploadDir = dir + "/" + keyPrefix; File dirFile = new File(uploadDir); if (!dirFile.exists()) { log.info("create local file :{}",uploadDir); dirFile.mkdirs(); }else{ } String filename = file.getOriginalFilename(); File uploadFile = new File(dirFile, filename); InputStream is = file.getInputStream(); FileOutputStream fos = new FileOutputStream(uploadFile); int size = is.available(); byte[] fields = new byte[size]; int len = is.read(fields); String md5 = null; if(len != -1) { if (!isAws() && (len / Constants.PART_SIZE != 0)) { md5 = ComputeMessageDigest.computeDigest(fields, "MD5"); } fos.write(fields, 0, len); } is.close(); fos.flush(); fos.close(); String key = keyPrefix + filename; log.info("start update to s3 :{}", key); if(isAws()){ info = AWSUtil.uploadFile(updateService.getS3Param().getS3Param(),uploadFile, key); }else{ info = AliYunUtil.uploadFile(updateService.getOSSParam().getOssParam(),uploadFile, key, md5); } log.info("Upload file to Cloud successful"); uploadFile.delete(); } return info; }