Upload do Spring 3.0 MultipartFile
Estou convertendo o aplicativo da Web Java para o Spring framework e aprecio alguns conselhos sobre os problemas que estou enfrentando com o upload do arquivo. O código original foi escrito usando org.apache.commons.fileupload.
O Spring MultipartFile envolve o org.apache.commons.fileupload ou eu posso excluir essa dependência do meu arquivo POM?
Eu vi o seguinte exemplo:
<code>@RequestMapping(value = "/form", method = RequestMethod.POST) public String handleFormUpload(@RequestParam("file") MultipartFile file) { if (!file.isEmpty()) { byte[] bytes = file.getBytes(); // store the bytes somewhere return "redirect:uploadSuccess"; } else { return "redirect:uploadFailure"; } } </code>
Originalmente eu tentei seguir esse exemplo, mas estava sempre recebendo um erro, pois não conseguia encontrar este param de solicitação. Então, no meu controller eu fiz o seguinte:
<code>@RequestMapping(value = "/upload", method = RequestMethod.POST) public @ResponseBody ExtResponse upload(HttpServletRequest request, HttpServletResponse response) { // Create a JSON response object. ExtResponse extResponse = new ExtResponse(); try { if (request instanceof MultipartHttpServletRequest) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; MultipartFile file = multipartRequest.getFiles("file"); InputStream input = file.getInputStream(); // do the input processing extResponse.setSuccess(true); } } catch (Exception e) { extResponse.setSuccess(false); extResponse.setMessage(e.getMessage()); } return extResponse; } </code>
e está funcionando. Se alguém puder me dizer por que @RequestParam não funcionou para mim, eu apreciarei. BTW eu tenho
<code> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="2097152"/> </bean> </code>
no meu arquivo de contexto do servlet.