【Spring學習筆記-MVC-13】Spring MVC之文件上傳

做者:ssslinppp      

1. 摘要


Spring MVC爲文件上傳提供了最直接的支持,這種支持是經過即插即用的MultipartResolve實現的。Spring使用Jakarta Commons FileUpload技術實現了一個MultipartResolver實現類:CommonsMultipartResolver。
下面將具體講解Spring MVC實現文件上傳的具體步驟。

2. 添加Jar包


Spring MVC文件上傳,須要添加以下兩個jar包:
  1. commons-fileupload-1.2.2.jar;
  2. commons-io-2.0.1.jar

3. 配置CommonsMultipartResolver



   
   
   
   
<!-- 文件上傳 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="UTF-8" p:maxUploadSize="5000000" p:uploadTempDir="upload/temp" />

說明:
  • p:defaultEncoding="UTF-8":這裏設置默認的文件編碼爲UTF-8,必須與用戶JSP的默認編碼一致;
  • p:maxUploadSize="5000000":指定文件上傳大小,單位爲字節;
  • p:uploadTempDir="upload/temp":文件上傳臨時目錄,上傳完成後,就會將臨時文件刪除;

4. 控制層代碼


前臺請求: http://localhost:8080/SpringMVCTest/test/uploadPage.action 時,返回uploadPage.jsp界面,以下:



   
   
   
   
@RequestMapping(value = "/upload") public String updateThumb(@RequestParam("name") String name, @RequestParam("file") MultipartFile file, HttpServletRequest request, ModelMap model) throws Exception { if (!file.isEmpty()) { // 保存文件-方式1 --測試過,能夠用,必須先建立相應目錄 // file.transferTo(new File("d:/"+file.getOriginalFilename())); // 保存文件-方式2 String path = request.getSession().getServletContext() .getRealPath("upload"); String fileName = file.getOriginalFilename(); File targetFile = new File(path, fileName); //目錄不存在,則建立目錄 if(!targetFile.exists()){ targetFile.mkdirs(); } //保存 try { file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } model.addAttribute("fileUrl", request.getContextPath()+"/upload/"+fileName); return "success"; } else { return "fail"; } }


5. 文件上傳JSP



   
   
   
   
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><html><head><title>請上傳用戶頭像</title></head><body> <h1>請選擇上傳的頭像文件</h1> <form method="post" action="<c:url value="/test/upload.action"/>" enctype="multipart/form-data"> <input type="text" name="name" /> <input type="file" name="file" /> <input type="submit" /> </form></body></html>

成功返回的界面:









附件列表

相關文章
相關標籤/搜索