使用 multipart/form-data 在 Spring 控制器中进行 REST 文件上传

问题描述 投票:0回答:1

是否可以使用

multipart/form-data
上传带有附加数据(如描述等)的文件?我在前端使用backbone.js,并用它调用REST api (jQuery)。 我不使用任何视图解析器,但我想以某种方式将我的文件传递给控制器,例如:

@RequestMapping(value = "/image/upload", method = RequestMethod.POST)
public String upload(UploadItem uploadItem, HttpSession session)

以便 uploadItem 存储:

private String desctiption;
private List<CommonsMultipartFile> fileData;

但我不会(也不能)将其添加到我的模型中。

当然我也很感兴趣是否可以有像这样的控制器:

@RequestMapping(value = "/image/upload", method = RequestMethod.POST)
public String upload(someFileType uploadItem, String desctiption)
spring rest backbone.js file-upload
1个回答
0
投票

是的,您也可以传递其他表单字段以及多部分数据。您可以检查字段名称并使用它。 (if (item.getName().equals("描述"))).

try {
    // Parse the request
    List items = upload.parseRequest(request);
    Iterator iterator = items.iterator();
    while (iterator.hasNext()) {
     FileItem item = (FileItem) iterator.next();
     if (!item.isFormField() && !item.getName().equals("")) {
      String fileName = item.getName();
      String root = context.getRealPath("/");
      File path = new File(root + "/uploads");
      if (!path.exists()) {
       boolean status = path.mkdirs();
      }

      File uploadedFile = new File(path + "/" + fileName);
      fileNames.add(fileName);
      System.out.println("File Path:-"
        + uploadedFile.getAbsolutePath());

      item.write(uploadedFile);
     }
    }
   } catch (FileUploadException e) {
    System.out.println("FileUploadException:- " + e.getMessage());
   } catch (Exception e) {
    System.out.println("Exception:- " + e.getMessage());
   }
  }
© www.soinside.com 2019 - 2024. All rights reserved.