使用多部分/表单数据在Spring控制器中加载REST文件

neekobn8  于 2022-09-18  发布在  Spring
关注(0)|答案(1)|浏览(147)

是否可以上传包含附加数据(如描述等)的文件使用multipart/form-data?我在我的前端使用Backbone.js,并用它调用rest API(JQuery)。我不使用任何视图解析器,但我想以某种方式将我的文件传递给控制器,如下所示:

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

因此,ploadItem存储:

private String desctiption;
private List<CommonsMultipartFile> fileData;

但我不会(也不能)在我的模型中加入这一点。

当然,我也感兴趣的是,是否有可能拥有这样的控制器:

@RequestMapping(value = "/image/upload", method = RequestMethod.POST)
public String upload(someFileType uploadItem, String desctiption)
ctehm74n

ctehm74n1#

可以,您也可以将其他表单域与多部分数据一起传递。您可以检查字段名并像这样使用它。(if(item.getName().equals(“destiption”)))。

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());
   }
  }

相关问题