0

我有一个包含两个文件上传元素的表单,这些元素支持多个文件上传。我的问题是如何获取两个文件上传元素的数据。

例如:我需要“files”“files2”元素的字段。

使用以下代码,我只能获取一个文件上传元素的详细信息。我是 Spring 新手,希望我的问题很清楚。

在此处输入图像描述

<table id="fileTable">  
<tr>
    <td><label for="file">Image URL</label></td>
    <td><input type="file" name="files[0]" id="file"></input></td>  
    <td><input id="addFile" type="button" value="Add Image URL" /></td> 
</tr>

<tr id="img_hover">
    <td><label for="file2">Image Hover URL</label></td>
    <td><input type="file" name="files2[0]" id="file2"></input></td>    
    <td><input id="addFile2" type="button" value="Add Image Hover URL" /></td>  
</tr>   

<tr>
    <td colspan="2">
        <input type="submit" value="Save"/>
    </td>
</tr>


@RequestMapping(value = "/save.action", method = RequestMethod.POST)
public ModelAndView save(HttpServletRequest request,
        HttpServletResponse response,           
        @ModelAttribute("uploadForm") FileUploadForm uploadForm

        ) {

    List<MultipartFile> files = uploadForm.getFiles();
    List<String> fileNames = new ArrayList<String>();

    if (null != files && files.size() > 0) {

        for (MultipartFile multipartFile : files) {

            String fileName = multipartFile.getOriginalFilename();
            fileNames.add(fileName);
            System.out.println(fileName);

        }
    }

    return new ModelAndView("index", "model", "");
}
4

1 回答 1

0

可能还有其他阻塞问题,但突出的是您的文件输入字段未正确命名以作为集合拾取。

<input type="file" name="files[0]" id="file"
...
<input type="file" name="files2[0]" id="file"

应该

<input type="file" name="files[0]" id="file"
...
<input type="file" name="files[1]" id="file"

在第一个版本中,它们将被视为 2 个不同的文件集合,一个名为files,另一个名为files2.

更新到 OP 评论:

问题是您在表单中定义了属于不同集合的 2 个文件字段(例如 files、files2),但您只获得其中一个集合 - files(例如 uploadForm.getFiles())。如果您打算将文件保存在单独的集合中,那么您需要将另一个集合添加到 FileUploadForm

private List<MultiparfFile> files;
private List<MultipartFile> files2;

然后在你的控制器中

uploadForm.getFiles();   //for file fields named files
uploadForm.getFiles2();  //for file fields named files2 
于 2013-09-05T04:01:35.400 回答