将FormData对象POST到Spring MVC

时间:2015-03-02 17:27:54

标签: ajax angularjs spring spring-mvc multipartform-data

所以我有一个用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很新,所以也许我一起采取错误的方法...

1 个答案:

答案 0 :(得分:1)

试试这个

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