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:
@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";
}
}
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:
@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;
}
e está funcionando. Se alguém puder me dizer por que @RequestParam não funcionou para mim, eu apreciarei. BTW eu tenho
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="2097152"/>
</bean>
no meu arquivo de contexto do servlet.