zoukankan      html  css  js  c++  java
  • spring mvc 选中多文件同时上传(利用input元素的multiple属性)

    原文:http://m.blog.csdn.net/article/details?id=51351388

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="upload.do" method="post" enctype="multipart/form-data">
            <p>一个选择上传的文件</p>
            <input type="text" name="reck" value=""/><br/> 
            <!-- 可以选取一张或者多种图片上传 -->
            <input type="file" name="files" multiple/><br/> 
            <!-- 每个input元素只能选中一个文件 -->
    <!--        <input type="file" name="files" /><br/> 
            <input type="file" name="files" /><br/> 
            <input type="file" name="files" /><br/> -->
            <input type="submit" value="Submit"/>
        </form>
    </body>
    </html> 

    spring中配置:

     <!-- ========文件上传======= -->
        <!--200*1024*1024即200M resolveLazily属性启用是为了推迟文件解析,以便捕获文件大小异常 -->
        <bean id="multipartResolver"
            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="209715200" />
            <property name="defaultEncoding" value="UTF-8" />
            <property name="resolveLazily" value="true" />
        </bean>

    java代码:

    package org.wxy.demo.action;
    
    import java.io.File;
    import java.io.IOException;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MaxUploadSizeExceededException;
    import org.springframework.web.multipart.MultipartFile;
    /**
     * 
     * <一句话功能简述><p>
     * MultipartFile类常用的一些方法:
     * String getContentType()          //获取文件MIME类型
     * InputStream getInputStream()     //后去文件流
     * String getName()                 //获取表单中文件组件的名字
     * String getOriginalFilename()     //获取上传文件的原名
     * long getSize()                   //获取文件的字节大小,单位byte
     * boolean isEmpty()                //是否为空
     * void transferTo(File dest)       //保存到一个目标文件中。
     *
     * @author wangxy
     * @param <E>
     *
     * @see  [相关类/方法]
     * @since  [产品/模块版本]
     */
    @Controller
    public class FileUpDownCtrl<E> {
    
        /**
         * 上传文件
         * @param file
         * @return
         */
        @RequestMapping(value="/upload.do")
        public String fileUpload(@RequestParam("files") MultipartFile[] files,HttpServletRequest request) { 
            String rect = (String) request.getAttribute("rect");
            System.out.println(rect);
    
            //判断file数组不能为空并且长度大于0  
            if(files!=null && files.length>0){  
                //循环获取file数组中得文件  
                for(int i = 0;i<files.length;i++){  
                    MultipartFile file = files[i];  
    
                    try {
                        //获取存取路径
                        String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/" + file.getOriginalFilename();  
                        // 转存文件  
                        file.transferTo(new File(filePath)); 
                    } catch (IOException e) {
                        e.printStackTrace();
                    }  
                }
                // 重定向  
                return "redirect:/list.do"; 
            }  
            // 重定向  
            return "redirect:/fail.html";  
        } 
    
        @RequestMapping(value="/list.do")
        @ResponseBody
        public String list(HttpServletRequest request,HttpServletResponse response) {
            String filePath = request.getSession().getServletContext().getRealPath("/") + "upload";
            File[] files = new File(filePath).listFiles();
    
            StringBuilder fileNames = new StringBuilder();
            for(File f : files){
                System.out.println(f.getName());
                fileNames.append(f.getName()+"
    ");
            }
            return fileNames.toString(); 
        }
    
        /**
         * 配置了 <property name="resolveLazily" value="true" />
         * 才有效
         * @author wangxy
         *
         * @param ex
         */
        @ExceptionHandler
        public void doExcepiton(Exception ex){
            if(ex instanceof MaxUploadSizeExceededException){
                System.out.println("文件太大");
            }
        }
    
    }
  • 相关阅读:
    [转载]Oracle 11g R1中资本管理器增强(2)
    [转载]Oracle监听器安装与设置(2)
    [转载]Oracle 11g R1中资源管理器加强(3)
    [转载]Oracle能否吸收领跑数据库市场?(2)
    [转载]怎样高效删除Oracle数据库中的反双数据
    [转载]Oracle 11g R1下的主动内存处置惩罚(1)
    [转载]Oracle假造公用数据控制设备使用
    [转载]Oracle可否担当领跑数据库市场?(1)
    [转载]将oracle 9i备份文件导入oracle 8i的方式简介
    OpenSuSE 11.1内行装置教程(贴图版)
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6588485.html
Copyright © 2011-2022 走看看