• springmvc之文件上传


    springmvc之文件上传

    1、导包

    • 基于maven
    <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、传统上传方式

    2.1、编写jsp

    <h3>文件上传</h3> 
    <form action="user/fileupload" method="post" enctype="multipart/form-data"> 
        选择文件:<input type="file" name="upload"/><br/> 
        <input type="submit" value="上传文件"/> 
    </form>
    

    2.2、编写控制器

    /*** 文件上传 
     * @throws Exception 
     */
    @RequestMapping(value="/fileupload") 
    public String fileupload(HttpServletRequest request) throws Exception {
        // 先获取到要上传的文件目录 
        String path = request.getSession().getServletContext().getRealPath("/uploads"); 
        // 创建File对象,一会向该路径下上传文件 
        File file = new File(path); 
        // 判断路径是否存在,如果不存在,创建该路径 
        if(!file.exists()) { 
            file.mkdirs(); 
        }
        // 创建磁盘文件项工厂 
        DiskFileItemFactory factory = new DiskFileItemFactory(); 
        ServletFileUpload fileUpload = new ServletFileUpload(factory); 
        // 解析request对象 
        List<FileItem> list = fileUpload.parseRequest(request); 
        // 遍历 
        for (FileItem fileItem : list) { 
            // 判断文件项是普通字段,还是上传的文件 
            if(fileItem.isFormField()) {
            
            }else { 
                // 上传文件项,获取到上传文件的名称 
                String filename = fileItem.getName(); 
                // 上传文件 
                fileItem.write(new File(file, filename)); 
                // 删除临时文件 
                fileItem.delete(); 
            } 
        }
        return "success"; 
    }
    

    3、springmvc方式文件上传

    SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的name属性名称相同。

    3.1、控制器代码

    /*** SpringMVC方式的文件上传
    ** @param request 
    * @return 
    * @throws Exception 
    */ 
    @RequestMapping(value="/fileupload2") 
        public String fileupload2(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";
    }
    

    3.2、配置文件解析器

    <!--配置文件解析器对象,要求id名称必须是multipartResolver-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
        <!--设置上传文件的最大尺寸-->
        <property name="maxUploadSize" value="10485760"/> 
    </bean>
    
    记得快乐
  • 相关阅读:
    javap -c 字节码含义
    redis --- lua 脚本实现原子操作
    感想
    AbstractAdvisingBeanPostProcessor---spring aop 处理器
    spring 自定义解析类
    protobuf3 语法解析
    Java设计模式之builder模式
    工厂和抽象工厂模式
    RESTful入门
    RocketMQ入门
  • 原文地址:https://www.cnblogs.com/Y-wee/p/13840737.html
Copyright © 2020-2023  润新知