1. 程式人生 > >jquery-form中ajaxSubmit提交檔案,以及解決ie9下上傳檔案後自動下載問題

jquery-form中ajaxSubmit提交檔案,以及解決ie9下上傳檔案後自動下載問題

1、之前的專案一直使用formData的方式上傳檔案到後臺處理,但新專案要求支援ie9,ie9不能有效支援formData,只能使用ajaxSubmit的方式上傳檔案前臺程式碼

<form id="upload-file" method="post" enctype="multipart/form-data"
				hidden="hidden">
				<input id="import-batch" type="file" name="file"
					onchange="batchImport2();"
					accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
			</form>


function batchImport2() {
	var options = {
		url : "ajax/import/",
		success : function(data) {
			var returnData = JSON.parse(data);
			。。。。
		}, 
		resetForm : true,
	};
	$.("#upload-file").ajaxSubmit(options);
}

2、後臺程式碼如下:

@RequestMapping(value = "......", method = RequestMethod.POST, produces = {"text/html;charset=UTF-8"})
    public String upload(HttpServletRequest request,
        HttpServletResponse response, @RequestParam(value = "file") MultipartFile file)
            throws EncryptedDocumentException, InvalidFormatException, WrongFileException, FileRowErrorException,
            Exception
    {      
        //TODO 上傳檔案處理程式碼
	return ...  //json 格式的返回資訊
     }

注意前端程式碼中不能指定dataType

後臺程式碼中一定要指定返回格式為  text/html,如果不這樣做在ie9總返回值會變為下載格式

注意ajaxSubmit上傳方式為非同步上傳,目前我沒有找到同步上傳的方法

options的其他引數註釋如下: