所以我有一个用AngularJS制作的表格(根本不适合该项目,但那个人使用的是什么)有标准字段和"文件"输入。从我读过的内容来看,听起来像FormData对象是一种保存表单的好方法,除了我根本无法使用它。我尝试按照方法here没有成功,我认为问题是我没有正确地编写控制器。实际表单有更多字段和多个文件,但这是我试图开始工作的简化测试:
HTML:
<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很新,所以也许我一起采取错误的方法...
答案 0 :(得分:1)
试试这个
@RequestMapping(value = "/addProfilePicForPage", method = RequestMethod.POST)
public String methodName(MultipartHttpServletRequest request, @RequestParam String pageid) {
...
}