最近有朋友問我spring mvc 項目如何實現文件的上傳,今天我整理了一下具體的過程與大家分享一下。
首先在做上傳文件功能時,你必須要有一個建立完畢的Spring MVC項目。我用的Spring MVC的HelloWord工程來示例,當然如何大家有項目可以直接用在項目上。
上傳單個文件
步驟如下:
1、在前端控制器配置文件(本項目所取的名字是:spring-mvc-servlet.xml)中加入上傳文件所需的Bean。
<bean>
<property>
<property>
<property>
2、在pom.xml中注入上傳文件所需的依賴
<dependency>
<groupid>commons-fileupload/<groupid>
<artifactid>commons-fileupload/<artifactid>
<version>1.3.1/<version>
3、在項目views文件夾(項目中裝頁面的文件夾)下新建一個上傳單個文件的頁面
<title>上傳單個文件示例/<title><link>
上傳附件
這裡要注意以下幾點:
(1)form表單提交的類型一定要加上enctype="multipart/form-data",表示不對所提交的內容編碼。
(2)action="" 路徑中前面要加項目名,這裡項目名是HelloSpringMVC。
(3)doUpload是本表單所提交的對應的處理方法。名為doUpload。
(4)input節點的name="file"中的file與doUpload方法所接收的參數名稱一致。
4、定義訪問成功的頁面
pageEncoding="UTF-8"%>
<link>
<title>上傳文件成功頁面/<title>Success
5、在Controller類中加入訪問入口方法(就是定位到上傳單個文件的頁面)
//定位到上傳單個文件界面 /hello/upload
@RequestMapping(value="/upload", method=RequestMethod.GET)
public String showUploadPage(){
return "uploadFile"; //view文件夾下的上傳單個文件的頁面
}
6、在Controller類中定義上傳文件的響應方法(就是表單中的所提交的action中的方法名)
/**
* 上傳單個文件操作
* @param RequestParam 括號中的參數名file和表單的input節點的name屬性值一致
* @return
*/
@RequestMapping(value="/doUpload", method=RequestMethod.POST)
public String doUploadFile(@RequestParam("file") MultipartFile file){
if(!file.isEmpty()){
try {
//這裡將上傳得到的文件保存至 d:\\temp\\file 目錄
FileUtils.copyInputStreamToFile(file.getInputStream(), new File("d:\\temp\\file\",
System.currentTimeMillis()+ file.getOriginalFilename()));
} catch (IOException e) {
e.printStackTrace();
}
}
return "success"; //上傳成功則跳轉至此success.jsp頁面
}
7、運行驗證:
上傳多個文件的下次再和大家分享。
閱讀更多 碼農的小人生 的文章