@RequestMapping(method = RequestMethod.POST)
	public @ResponseBody
	JsonResponse uploadAction(@Valid @ModelAttribute(value = "image") Image image, 
			@RequestParam(value = "captcha_challenge", required=true) String challenge,
			@RequestParam(value = "captcha_response", required=true) String response, 
	        BindingResult result,
			HttpServletRequest paramHttpServletRequest) {
		JsonResponse jsonResponse = new JsonResponse();
	    String remoteAddr = paramHttpServletRequest.getRemoteAddr();
	    ReCaptchaResponse reCaptchaResponse = recaptcha.checkAnswer(remoteAddr, challenge, response);
	    if (!reCaptchaResponse.isValid()) {
	    	jsonResponse.setCaptchaError(context.getMessage("error.bad.captcha", null, Locale.getDefault()));
	    	return jsonResponse;
	    }
		
		prepareImage(image);
		(new ImageValidator()).validate(image, result);
		if (!result.hasErrors()) {
			try {
				image.setBytes(image.getFile().getBytes());
				image.setContentType(image.getFile().getContentType());
				image = imageService.saveImage(image);
				jsonResponse.setResponse(paramHttpServletRequest.getRequestURL() + image.getId());
			} catch (Exception e) {
				log.error(e.getMessage());
			}
		} else {
			for (ObjectError error : result.getAllErrors()) {
				jsonResponse.appendError(context.getMessage(error.getCode(), null, Locale.getDefault()));
			}
		}
		return jsonResponse;
	}