我會盡量簡化這個問題。我想通過使用JQuery的AJAX提交上傳文件和附加表單數據(但是也爲了與ie 7或ie 8兼容,並且也是異步的)上傳文件+表單數據+ Spring MVC + JQuery
沒有提交是通過JQuery提交的AJAX提交,這個過程工作正常。即我做了以下:
- 聲明是CommonsMultipartResolver
- 在控制器寫此處理方法
@RequestMapping(值= 「/ processfileupload」,方法= RequestMethod.POST) 公共字符串@ResponseBody handleFileUpload(UploadForm數據,BindingResult結果)拋出異常{
....
}
其中UploadForm是我綁定到表單的Spring MVC表單對象。另外,我在Spring的form標籤中綁定了formObject,如下所示:enctype =「multipart/form-data」..等等。
就像我說的,如果不是通過Ajax通過JQuery調用完成,一旦我嘗試使其成爲Ajax調用,該文件始終爲空。
這裏是通過JQuery Ajax調用
功能submitFileUploadViaAjax(){
$.ajax({
url: "processfileupload",
data: $("#file_upload_form").serialize(),
type: "POST",
processData: false,
contentType: false,
success: function(data) {
$(response).html(data);
},
error: function (xhr, ajaxOptions, thrownError) {
if (xhr.readyState == 0 || xhr.status == 0) {
// not really an error
return;
} else {
alert("XHR Status = "+xhr.status);
alert("Thrown Error = "+thrownError);
alert("AjaxOptions = "+ajaxOptions)
}
}
});
}
我懷疑問題可能是:數據:$( 「#file_upload_form」)連載(),
我已經閱讀了一些建議的解決方案,爲那些有類似問題的用戶使用formData對象,但已經讀過,這將不會與IE 7或IE 8兼容,是 這是真的?我的頭也讀了JQuery文件上傳插件可以工作(https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data),但我不確定我是否能夠通過彈簧將表單數據綁定到表單對象的方式將它連接到Spring,然後將其注入控制器。
有沒有人有上傳文件(相對較小)+有一些表單數據的最佳方式的想法,並且能夠在彈簧mvc控制器中使用單個端點處理該文件?和解決方案,以便它與大多數瀏覽器兼容,但特別是將與ie 7或ie 8(它是一個要求它在這些瀏覽器中工作)。
感謝一堆!使用AJAX
- 羅科
好的,我自己想清楚了。我使用了JQuery Form Plugin,並且我已經閱讀過它可以兼容IE以及大多數其他瀏覽器。它甚至適用於Spring MVC,所以我非常高興! –
嗨Rocco。你是如何使用jQuery Form Plugin的?我遇到了與您在帖子中提到的相同的問題。但正如你所說,你已經解決了它,我很感興趣你是如何做到的。你能用你的解決方案放縱我嗎?謝謝 –