SpringMVC文件上传实现步骤详解
SpringMVC文件上传
第一步:jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/fileUpload" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="username"> <br> 文件: <input type="file" name="imgFile"> <br> <input type="submit" value="上传"> </form> </body> </html>
第二步:编写UploadController
package com.lilei.upload; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; /** * 2. SpringMVC提供的文件上传 */ @Controller public class UploadController { /** * SpringMVC文件上传 * 1. 控制器方法通过MultipartFile获取整个上传的文件。 * 2. 参数名称upload(MultipartFile imgFile..) 中的imgFile一定要与页面的文件域的表单元素名称一致. * <input type="file" name="imgFile"> */ @RequestMapping("/fileUpload") public String upload(MultipartFile imgFile,String username,HttpServletRequest request) throws Exception { //1. 获取上传的目录路径 // D:/classes/IdeaProjects2019/springmvc02/target/springmvc02-1.0-SNAPSHOT/upload String path = request.getSession().getServletContext().getRealPath("/upload"); //2. 以天为单位,一天创建一个文件夹,保存当天上传的文件 String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); //3. 创建目录 File file = new File(path,date); if (!file.exists()){ // 创建目录或子目录 file.mkdirs(); } //4. 文件上传 //4.1 获取原始文件名 String fileName = imgFile.getOriginalFilename(); fileName = UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf(".")); //4.2 文件上传 【关键代码】 imgFile.transferTo(new File(file,fileName)); return "success"; } }
第三步:springMVC.xml配置文件上传解析器
<!--配置文件上传解析器--> <!--注意:这里的id必须固定,springMVC会根据此id找解析器。--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--文件上传最大:10M--> <property name="maxUploadSize" value="10485760"/> </bean>
第四步:测试
上一篇:
通过多线程提高代码的执行效率例子