SpringMVC-文件上传-保姆级教程

文件上传

  1. 文件上传流程图
    在这里插入图片描述

  2. 导jar包
    commons-io-2.4.jar
    commons-fileupload-1.4.jar

  3. springmvc.xml中编写文件上传解析器

    <!--文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>
    
  4. jsp中的配置

    <form action="upload" method="post"
             enctype="multipart/form-data">
           <input type="file" name="img" />
           <input type="submit" value="提交" />
    </form>
    

    在这里插入图片描述

  5. 后端代码书写

    @Controller
    public class uploadController {
    
        @RequestMapping("/toUpload")
        public String toUpload(){
            return "upload";
        }
    
        @RequestMapping("/upload")
        public void upload(MultipartFile[] img, HttpSession session) {
            // 1 准备文件上传位置
            // 在WEB目录下的“/upload”文件夹中存放上传的文件
            ServletContext servletContext = session.getServletContext();
            String realPath = servletContext.getRealPath("/upload");
    
            File file = new File(realPath);
            if (!file.exists()){// 如果文件夹不存在,创建文件夹
                file.mkdir();
            }
    
            // 多个上传时
            for (MultipartFile imgFile : img) {
                // 获取文件名
                String fileName = imgFile.getOriginalFilename();
                // 分割字符串
                String[] split = fileName.split("\\.");
                // 添加时间戳,防止文件重名
                fileName = split[0]+System.currentTimeMillis()+"."+split[1];
    
                // 调用transferTo方法实现文件上传功能
                try {
                    imgFile.transferTo(new File(realPath+File.separator+fileName));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
        }
    }