zoukankan      html  css  js  c++  java
  • 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>
    
    记得快乐
  • 相关阅读:
    ViewGroup全面分析
    onInterceptTouchEvent和onTouchEvent调用时序 .
    基数树与RCU锁
    dwarf格式解析
    算法一(动态规划)
    IO调度器(二) IO的中断返回
    IO调度器
    借个例子说明sed的模式空间,以及针对模式空间的N,P,D用法
    f2fs中node page的lock_page
    python学习之用正则处理log(持续更新,ftace)
  • 原文地址:https://www.cnblogs.com/Y-wee/p/13840737.html
Copyright © 2011-2022 走看看