jquery-form中ajaxSubmit提交檔案,以及解決ie9下上傳檔案後自動下載問題
阿新 • • 發佈:2019-02-07
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的其他引數註釋如下: