SpringMVC 上传文件

@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public ModelAndView getUploadFile(HttpServletRequest request, HttpServletResponse response) {
	System.out.println("fucking spring3 MVC upload file with Multipart form");
	String myappPath = request.getSession().getServletContext().getRealPath("/");
	try {
		if (request instanceof MultipartHttpServletRequest) {
			MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
			System.out.println("fucking spring3 MVC upload file with Multipart form");
			// String myappPath = multipartRequest.getServletContext().getRealPath("/"); 
			// does not work, oh my god!!
			MultipartFile file = multipartRequest.getFiles("userfile1").get(0);
			long size = file.getSize();
			byte[] data = new byte[(int) size];
			InputStream input = file.getInputStream();
			input.read(data);
			
			// create file, if no app context path, will throws access denied.
			// seems like you could not create any file at tomcat/bin directory!!!
			File outFile = new File(myappPath + File.separator + file.getOriginalFilename());
			if(!outFile.exists()) {
				outFile.createNewFile();
				System.out.println("full path = " + outFile.getAbsolutePath());
			} else {
				System.out.println("full path = " + outFile.getAbsolutePath());
			}
			FileOutputStream outStream = new FileOutputStream(outFile);
			
			outStream.write(data);
			outStream.close();
			input.close();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}

	return new ModelAndView("welcome");
}
@RequestMapping({"/account/account_save"})
	public String saveAccount(Model model, HttpServletRequest req, MultipartFile user_pic) {String picPath = "", fn = "", imgUrl = "";		
		if (user_pic.getOriginalFilename().indexOf(".") != -1) {  
			fn += Codec.UUID()+user_pic.getOriginalFilename().substring(user_pic.getOriginalFilename().lastIndexOf("."));  
	    }
		if(fn!=""){
			imgUrl = "/account/" + fn;
			File realPath = new File(Constants.UPLOAD_REALPATH+"/account/" + fn);
			try {
				FileUtils.copyInputStreamToFile(user_pic.getInputStream(), realPath);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}else{
			imgUrl = Constants.DEFAULT_UPIC;
		}
}


你可能感兴趣的:(SpringMVC 上传文件)