使用Spring处理多个文件

时间:2012-06-01 01:53:50

标签: spring

我用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" />

这是Spring控制器处理来自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个文件;但这不是我想要的。我想使用Controller处理无限的文件。

希望你理解我的问题并抱歉我的小英语。

1 个答案:

答案 0 :(得分:0)

您需要使用如下所示的一个字段创建模型类。

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

带有吸气剂和二传手。现在,您需要在jsp中将此模型作为@ModelAttribute传递给您有文件上载表单。

在JSP中,您需要为用户创建一个新输入,以便使用javascript上传新文件,并在输入标记的name属性中创建指定值,方括号中的files[some int value]指定文件控制的计数用户在jsp中添加。

当您发布包含多个文件的表单时,您可以在控制器中使用相同的@ModelAttribute字段来使列表中包含多个文件。

希望这会对你有所帮助。

干杯。