1. 程式人生 > >使用springmvc實現檔案上傳

使用springmvc實現檔案上傳

1.匯入檔案上傳的jar包

       使用 Commons-fileupload 元件實現檔案上傳,需要匯入該元件相應的支撐 jar 包: Commons-fileupload 和commons-io。 commons-io 不屬於檔案上傳元件的開發 jar 檔案,但 Commons-fileupload 元件從 1.1 版本開始,它工作時需要 commons-io 包的支援。

 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>

2.配置檔案解析器

<!-- 配置檔案上傳解析器 --> <bean id="multipartResolver" <!-- id 的值是固定的--> class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 設定上傳檔案的最大尺寸為 5MB --> <property name="maxUploadSize"> <value>5242880</value> </property> </bean> 注意: 檔案上傳的解析器 id 是固定的,不能起別的名稱,否則無法實現請求引數的繫結。(不光是檔案,其他欄位也將無法繫結)

3.編寫檔案上傳的JSP頁面

    <h3>檔案上傳</h3> <form action="user/fileupload" method="post" enctype="multipart/form-data"> 選擇檔案:<input type="file" name="upload"/><br/> <input type="submit" value="上傳檔案"/> </form>

注:(1)form表單的enctype的值必須是:multipart/form-data;

         (2)提交方式必須是post請求;

          (3)提供一個檔案選擇域<input type=”file” />。

4.編寫程式碼實現

/** * SpringMVC方式的檔案上傳 * * @param request * @return * @throws Exception */ @RequestMapping(value="/fileupload") public String fileupload(HttpServletRequest request,MultipartFile upload) throws Exception { System.out.println("SpringMVC方式的檔案上傳..."); // 先獲取到要上傳的檔案目錄 String path = request.getSession().getServletContext().getRealPath("/uploads"); // 建立File物件,一會向該路徑下上傳檔案 File file = new File(path); // 判斷路徑是否存在,如果不存在,建立該路徑 if(!file.exists()) { file.mkdirs(); } // 獲取到上傳檔案的名稱 String filename = upload.getOriginalFilename(); String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); // 把檔案的名稱唯一化 filename = uuid+"_"+filename; // 上傳檔案 upload.transferTo(new File(file,filename)); return "success"; }