我正在將Java Web應用程序轉換爲Spring框架,並對我在上傳文件時遇到的問題提供了一些建議。原始代碼是使用org.apache.commons.fileupload編寫的。Spring 3.0 MultipartFile上傳
春天在什麼MultipartFile包裝org.apache.commons.fileupload或者我可以排除我的POM文件這種依賴?
我已經看到了下面的例子:
@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"; } }
本來我想以此爲榜樣,但總是得到一個錯誤,因爲它找不到此請求PARAM。所以,在我的控制器我已經做了以下:
@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; }
,它是工作。如果有人能告訴我爲什麼@RequestParam不適合我,我會很感激。順便說一句我有
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="2097152"/>
</bean>
在我的servlet上下文文件。
你是什麼意思將它作爲方法參數傳遞?誰將從請求中提取它並將其提供給該方法? – Gary
春天會... :) – Bozho