原文地址:http://www.yiidian.com/springmvc/file-upload.htmlhtml
文件上傳是表現層常見的需求,在Spring MVC
中底層使用Apache的Commons FileUpload
工具來完成文件上傳,對其進行封裝,讓開發者使用起來更加方便。接下來看看如何開發?java
<!-- commons-fileUpload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
<!-- 配置文件上傳解析器 注意:必須配置id,且名稱必須爲multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 配置限制文件上傳大小 (字節爲單位)--> <property name="maxUploadSize" value="1024000"/> </bean>
注意幾個點:web
CommonsMultipartResolver
解析器multipartResolver
,不然沒法成功接收文件maxUploadSize
屬性限制文件上傳大小<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>一點教程網-文件上傳</title> </head> <body> <h3>SpringMVC方式文件上傳</h3> <form action="/upload" method="post" enctype="multipart/form-data"> 選擇文件:<input type="file" name="imgFile"> <br/> 文件描述:<input type="text" name="memo"> <br/> <input type="submit" value="上傳"> </form> </body> </html>
上傳表單注意如下幾點:spring
表單的enctype必須改成multipart/form-data
表單提交方式必須爲POST
,不能是GETmvc
package com.yiidian.controller; import com.yiidian.domain.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.UUID; /** * 演示Spring MVC文件上傳 * 一點教程網 - www.yiidian.com */ @Controller public class UploadController { /** * 接收文件 */ @RequestMapping("/upload") public String upload(HttpServletRequest request, MultipartFile imgFile,String memo){ //1.獲取網站的upload目錄的路徑: ServletContext對象 String upload = request.getSession().getServletContext().getRealPath("/upload"); //判斷該目錄是否存在,不存在,本身建立 File uploadFile = new File(upload); if(!uploadFile.exists()){ uploadFile.mkdir(); } //把文件保存到upload目錄 //2.生成隨機文件名稱 //2.1 原來的文件名 String oldName = imgFile.getOriginalFilename(); //2.2 隨機生成文件名 String uuid = UUID.randomUUID().toString(); //2.3 獲取文件後綴 String extName = oldName.substring(oldName.lastIndexOf(".")); //.jpg //2.4 最終的文件名 String fileName = uuid+extName; //3.保存 try { imgFile.transferTo(new File(upload+"/"+fileName)); } catch (IOException e) { e.printStackTrace(); } System.out.println("文件描述:"+memo); return "success"; } }
注意:這裏使用MultipartFile
對象接收文件,並把文件存放在項目的upload目錄下,同時還接收了普通參數。app
檢查項目的target目錄,是否有文件dom
控制檯輸出參數內容:yii
源碼下載:https://pan.baidu.com/s/1mtuGCnL_aoq0IEem_viwMgjsp
歡迎關注個人公衆號::一點教程。得到獨家整理的學習資源和平常乾貨推送。 若是您對個人系列教程感興趣,也能夠關注個人網站:yiidian.com工具