是否可以使用
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)
是的,您也可以传递其他表单字段以及多部分数据。您可以检查字段名称并使用它。 (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());
}
}