Java Web アプリケーションを Spring フレームワークに変換していますが、ファイルのアップロードで直面している問題についてアドバイスをいただければ幸いです。元のコードは、org.apache.commons.fileupload を使用して作成されました。
Spring 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"; } }
もともと私はこの例に従おうとしましたが、このリクエストパラメーターが見つからなかったため、常にエラーが発生していました。したがって、コントローラーで次のことを行いました。
@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>
私のサーブレットコンテキストファイルで。