所以我有一个用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也很新,所以可能我的方法完全错误...