将FormData对象POST到Spring MVC

4
所以我有一个用AngularJS制作的表单(与项目完全不匹配,但那是那个人使用的),它具有标准字段以及“文件”类型的输入。根据我的阅读,FormData对象似乎是保存表单的好方法,但我无法使其起作用。我尝试按照这里的方法操作,但没有成功,我认为问题在于我没有正确编写控制器。 实际表单具有更多字段和多个文件,但这是我一直在尝试让其正常工作的简化测试:
<form enctype="multipart/form-data" method="post" name="testform">
  <input type="file" name="file" required />
  <input type="text" name="name"/>
</form>

JS:

function submit() {
var fd = new FormData(document.getElementById("testform"));
$.ajax({
    url: saveUrl,
    type: "POST",
    data: fd,
    processData: false,  // tell jQuery not to process the data
    contentType: false,   // tell jQuery not to set contentType
    success: function (result) {...}
});
}

我已经尝试了很多使用MultipartHttpServletRequest的控制器变体,该对象对表单进行建模,还尝试了不同的标头等。但没有一种方法真正有效,但大致上类似于以下内容:

@RequestMapping(value = "save", method = RequestMethod.POST, headers = "content-type=multipart/form-data")
@ResponseBody
public String saveShipmentRequest(TestFormData testFormData) {
    ...
}

如果有人能帮忙,那就太棒了。我也可以接受其他的做法,因为我对Angular几乎一无所知,而且对Spring也很新,所以可能我的方法完全错误...

1个回答

1

试试这个

@RequestMapping(value = "/addProfilePicForPage", method = RequestMethod.POST)
public String methodName(MultipartHttpServletRequest request, @RequestParam String pageid) {
        ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接