springMvc文件上傳:
1、文件上傳
定義:就是將本地計算的中得文件上傳到當前請求應用得應用服務器過程,稱之為文件上傳
2、springmvc中文件上傳注意事項
a.准備文件上傳頁面 表單提交方式必須是post enctype必須是multipart/form-data
b.開發控制器咋控制器中使用MultipartFile形式進行接受用戶上傳文件
c.使用MultipartFile方式接受文件必須在配置文件中配置文件上傳解析器 且 解析器得id必須為multipartResolver
d.multipartResolver 在處理文件上傳是要求項目必須引入commons-fileupload
springboot中文件上傳
1.准備上傳頁面 提供form表單 提交post emctype multipart/form-data
新建webapp:
這個文件是在main目錄下新建得webapp中寫的一個upload.jsp.
<%-- Created by IntelliJ IDEA. User: chenjl159 Date: 2020/8/19 Time: 15:02 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" isELIgnored="false" %> <html lang="en"> <head> <title>Title</title> </head> <body> <h1> 用來測試文件上傳 </h1> <form action="${pageContext.request.contextPath}/file/upload" method="post" enctype="multipart/form-data"> <input type="file" name="aaa"> <br> <input type="submit" value="上傳文件"> </form> </body> </html>
2.開發控制器 使用MultipartFile形式接受 將接受文件放入執行文件目錄中即可
@Controller @RequestMapping("file") public class FileController { @RequestMapping("upload") public String upload(MultipartFile aaa, HttpServletRequest request) throws IOException { System.out.println("文件名"+aaa.getOriginalFilename()); System.out.println("文件類型"+aaa.getContentType()); System.out.println("文件大小"+aaa.getSize()); //根據相對獲取絕對路徑 String realPath = request.getSession().getServletContext().getRealPath("/files"); //創建時間文件夾 String format = new SimpleDateFormat("yyyy-MM--dd").format((new Date())); File file=new File(realPath,format); if(!file.exists()) file.mkdirs(); //獲取文件后綴 String extension = FilenameUtils.getExtension(aaa.getOriginalFilename()); String newFileNamePrefix = UUID.randomUUID().toString().replace("-", "")+ new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); String newFileName =newFileNamePrefix+"."+extension; //處理上傳操作 aaa.transferTo(new File(file,newFileName)); return "redirect:/upload.jsp"; } }
其中得配置文件:
server: port: 8989 servlet: context-path: /springboot_day2 jsp: #熱部署 init-parameters: development: true spring: mvc: view: suffix: .jsp prefix: / servlet: multipart: max-request-size: 4MB #控制請求可以上傳文件得大小大小 默認為10MB 單位可以為MB 和KB max-file-size: 4MB #真正用來控制實際文件上傳大小限制 默認值為1MB 單位為MB #讓max-file-size比max-request-size大或者相等較好,因為如果不行得話可以在請求得時候就拒絕,不在走后面得類型
目錄結構: