0

HTMLでいくつかのファイルをアップロードしています。

<label for="app_snapshot_image_1">SNAPSHOT_1</label>
<input type="file" name="app_snapshot_image_1" id="app_snapshot_image_1" />
<label for="app_snapshot_image_2">SNAPSHOT_2</label>
<input type="file" name="app_snapshot_image_2" id="app_snapshot_image_2" />
<label for="app_snapshot_image_2">SNAPSHOT_3</label>
<input type="file" name="app_snapshot_image_3" id="app_snapshot_image_3" />

そしてこれはWEBからのマルチパートリクエストを処理するスプリングコントローラーです。

@RequestMapping(value="/apps/addOrModify/", method=RequestMethod.POST)
      public String testUpload(
            @RequestParam(required=false) MultipartFile app_snapshot_image_1,
            @RequestParam(required=false) MultipartFile app_snapshot_image_2,
            @RequestParam(required=false) MultipartFile app_snapshot_image_3) {
...
}

ただし、上記のコントローラーは、app_snapshot_image_1から3までの名前の3つのファイルしか処理できません。しかし、これは私が望むものではありません。コントローラを使用して無制限のファイルを処理したいのですが。

あなたが私の質問を理解し、私の小さな英語をお詫びすることを願っています。

4

1 に答える 1

0

以下のように1つのフィールドでモデルクラスを作成する必要があります。

List<MultipartFile> files = LazyList.decorate(new ArrayList<MultipartFile>(),
                    FactoryUtils.instantiateFactory(MultipartFile.class));

そのゲッターとセッターで。@ModelAttribute次に、ファイルアップロード用のフォームがあるjspのように、このモデルを渡す必要があります。

JSPでは、ユーザーがjavascriptを使用して新しいファイルをアップロードするための新しい入力を作成する必要があります。作成する入力タグの名前属性でfiles[some int value]、角かっこ内の値を指定し、ユーザーがjspで追加したファイルコントロールの数を指定します。

また、複数のファイルを含むフォームを投稿する場合、コントローラーで同じ@ModelAttributeフィールドを使用して、リストを複数のファイルで埋めることができます。

これがお役に立てば幸いです。

乾杯。

于 2012-06-01T02:24:00.477 に答える