SpringMVC + MultipartFile實現檔案上傳
阿新 • • 發佈:2019-01-01
jar包別漏掉:
commons-fileupload
maven依賴:
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> </dependency>
Spring配置(這裡採用的是註解配置):
@Bean public MultipartResolver multipartResolver() throws IOException{ CommonsMultipartResolver commonsMultipartResolver=new CommonsMultipartResolver(); commonsMultipartResolver.setUploadTempDir(new FileSystemResource("fileUpload/temp"));//上傳中臨時檔案存放目錄 commonsMultipartResolver.setMaxUploadSize(2097152);//上傳檔案的總大小限制,這裡設定為2G commonsMultipartResolver.setDefaultEncoding("UTF-8");//編碼 //commonsMultipartResolver.setResolveLazily();//延遲解析,解析檔案的時候再拋異常 //commonsMultipartResolver.setServletContext(); commonsMultipartResolver.setMaxInMemorySize(1024);//快取大小限制 //commonsMultipartResolver.setMaxUploadSizePerFile();//單個檔案大小限制 //commonsMultipartResolver.setPreserveFilename(); return commonsMultipartResolver; }
HTML程式碼:
<div> <form id="uploadTest" name="uploadTest" enctype="multipart/form-data" > <input type="file" name="file"> <button class="btn" type="button" id="uploadButton">上傳</button> </form> </div>
js程式碼:
$(function() { $("#uploadButton") .click( function() { $("#uploadTest") .ajaxSubmit( { type : 'post', url : "/test/uplodeTest", contentType : "application/x-www-form-urlencoded; charset=utf-8", success: function(data) { console.log(data) }, error: function (data) { console.log(data) } }); }); });
後臺使用Spring MVC:
/** * 檔案上傳測試 * * @param file * @param request * @param response * @return * @throws Exception */ @RequestMapping("/uplodeTest") public String uplodeTest(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception { //這裡的引數file名稱要和<input type="file" name="file">中的name一致 //配置主沒有注入MultipartResolver這個Bean時,file會為null if (file == null) { return this.json(Constants.CODE_FAIL); } //檔案不為空,寫入上傳路徑 if (!file.isEmpty()) { //上傳的檔案存入/fileUpload/目錄下 String realPath = request.getSession().getServletContext().getRealPath("/fileUpload/"); //上傳檔名 String filename = file.getOriginalFilename(); File filepath = new File(realPath, filename); //判斷路徑是否存在,如果不存在就建立一個 if (!filepath.getParentFile().exists()) { filepath.getParentFile().mkdirs(); } //將上傳檔案儲存到一個目標檔案當中 file.transferTo(new File(realPath + File.separator + filename)); return this.jsonOK(); } else { return this.json(Constants.CODE_FAIL); } }