13

@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を使用して出くわしました。

注:単一ファイルのアップロードで動作させることができました。しかし、今日の私の課題は、一度に複数のファイルを取得することです。

どんな助けでも感謝します。

前もって感謝します。

4

2 に答える 2

0

commons-fileupload 依存関係が含まれていますか?

<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3</version>
</dependency>

コントローラーハンドラーのパラメータータイプとしてArrayListを使用しても、ファイルアップロードが正常に機能することをテストしました

于 2013-06-03T04:22:46.157 に答える