springmvc文件上傳


1、

文件的上傳與下載基本上是web項目中會用到的技術,在web學習中我們用到的是 Apache fileupload這個組件來實現上傳,在springmvc中對它進行了封裝,讓我們使用起來比較方便,但是底層還是由Apache fileupload來實現的。springmvc中由MultipartFile接口來實現文件上傳。

2、MultipartFile接口

該接口用來實現springmvc中的文件上傳操作,它有兩個實現類:

接口定義的方法:

3、實現文件上傳

3.1 導入jar包

  • commons-fileupload
  • commons-io

commons-io可以不用自己導入,maven會自動導入對應版本的jar

	<dependency>
		<groupId>commons-fileupload</groupId>
		<artifactId>commons-fileupload</artifactId>
		<version>1.3.2</version>
	</dependency>

3.2 前端jsp頁面

  • input的type設置為file

  • form表單的method設為post,

  • form表單的enctype設置為multipart/form-data,以二進制的形式傳輸數據。

      <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="ISO-8859-1">
      <title>Insert title here</title>
      </head>
      <body>
          <form action="/ssm/file/imgUpload" enctype="multipart/form-data" method="post">
      	    <input type="file" name="file"><br><br>
      	    <input type="submit" value="上傳">
          </form>
      </body>
      </html>
    

3.3 Controller層接收

使用MultipartFile對象作為參數,接收前端發送過來的文件,將文件寫入本地文件中,就完成了上傳操作

@RequestMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest req)
		throws IllegalStateException, IOException {

	// 判斷文件是否為空,空則返回失敗頁面
	if (file.isEmpty()) {
		return "failed";
	}
	// 獲取文件存儲路徑(絕對路徑)
	String path = req.getServletContext().getRealPath("/WEB-INF/file");
	// 獲取原文件名
	String fileName = file.getOriginalFilename();
	// 創建文件實例
	File filePath = new File(path, fileName);
	// 如果文件目錄不存在,創建目錄
	if (!filePath.getParentFile().exists()) {
		filePath.getParentFile().mkdirs();
		System.out.println("創建目錄" + filePath);
	}
	// 寫入文件
	file.transferTo(filePath);
	return "success";
}  

3.4 springmvc.xml配置CommonsMultipartResolver。

<bean id="multipartResolver"
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!--上傳文件的最大大小,單位為字節 --> 
	<property name="maxUploadSize" value="17367648787"></property>
	 
	<!-- 上傳文件的編碼 -->
	<property name="defaultEncoding" value="UTF-8"></property>
</bean>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM