@Controller と @RequestMapping を使用して spring 3.1.2 を使用して複数のファイルをアップロードしようとしています。
ここに私がしたことと私の設定があります。
Html5 フォーム:
<form action="addFileSystemImage.foo" method="post" enctype="multipart/form-data">
<input class='fileInput' type="file" name="files[]" multiple="multiple" />
<input type="text" value="13asdf12eadsf" name="locId"/>
<input type="submit" />
</form>
コントローラの方法:
@RequestMapping(value="/publisher/addFileSystemImage.foo", method=RequestMethod.POST)
public @ResponseBody List<UploadedFile> addFileSystemImage(@RequestParam("files[]") ArrayList<MultipartFile> files, String locId, HttpServletRequest request) {
//do lotsa voodoo rocket science here to process the files
}
私のconf:
<mvc:annotation-driven />
<context:component-scan base-package="foo.package"></context:component-scan>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
フォームを送信すると、addFileSystemImage メソッドに到達します。locId 引数のデータはここにありますが、「files」引数はバインドされていません。私が試した引数/フィールド名/引数タイプの組み合わせに関係なく、体系的にnullです。
HttpServletRequest 引数は org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest であり、実際にファイル データを保持する multiPartFile 属性を保持します。デバッグでその値を見ると、
{files[]=[org.springframework.web.multipart.commons.CommonsMultipartFile@16afd7f9, org.springframework.web.multipart.commons.CommonsMultipartFile@728c2811, org.springframework.web.multipart.commons.CommonsMultipartFile@4f9aaed7]}
これは、私のファイル[]が実際にここにあることを意味します...しかし、どういうわけか、データバインディングステップを適切に通過しませんでした...
さて...リクエストからデータを取得できるとあなたが言うことは知っています...しかし、私はむしろこれを適切に機能させたいです... Sringの方法... :)そしてMultipartFileのArrayListを適切に持っています人口。
何か不足していますか?誰かが実際にこれを適切に機能させましたか? この ArrayList (または通常の Array ) を設定するにはどうすればよいですか?
私はこの解決策 Spring MVC に ajax ファイルのアップロードと MultipartFileを使用して出くわしました。
注:単一ファイルのアップロードで動作させることができました。しかし、今日の私の課題は、一度に複数のファイルを取得することです。
どんな助けでも感謝します。
前もって感謝します。