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的多部分请求的spring控制器。

@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

您需要创建一个具有如下字段的模型类。

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

用它的 getter 和 setter。现在你需要像@ModelAttribute在jsp中一样传递这个模型,你有一个用于文件上传的表单。

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

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

希望这对您有所帮助。

干杯。

于 2012-06-01T02:24:00.477 回答