上传文件

依赖类库:

  1.commons-io.jar

  2.commons-fileupload.jar

xml文件配置:

<!-- 配置文件上传 -->
    <bean id="multipartResolver"  
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <!-- 默认编码 -->
        <property name="defaultEncoding" value="utf-8" />  
        <!-- 文件大小最大值,单位字节 -->
        <property name="maxUploadSize" value="10485760000" />  
        <!-- 内存中的最大值,单位字节 -->
        <property name="maxInMemorySize" value="40960" />  
    </bean> 

单文件上传:

index.jsp页面:

<form action="student/uploadPortrait.do" method="post" enctype="multipart/form-data">
        <input type="file" name="portrait">
        <button>上传</button>
   </form>

注意:

  1.method属性值必须为post

  2..enctype属性值为:multipart/form-data

业务处理代码:

    @RequestMapping("/uploadPortrait")
        public String uploadPortrait(HttpServletRequest request,
                @RequestParam("portrait") CommonsMultipartFile portrait) {
            try {
                String url =  request.getServletContext().getRealPath("/upload/");
                System.out.println(url);
                File file = new File(url);
                if (!file.exists() && !file.isDirectory())
                    file.mkdirs();
                String filename = new Date().getTime()
                        + zhutu.getOriginalFilename();
                FileOutputStream os = new FileOutputStream(url + filename);
                FileInputStream in = (FileInputStream) zhutu.getInputStream();
                byte[] buff = new byte[1024];
                int len;                    
                while((len=in.read(buff))!=-1){
                    os.write(buff,0,len);
                }    
                os.flush();
                os.close();
                in.close();                    
            } catch (Exception e) {                
                System.out.println("上传出错");
            }            
            return "success";
        }

 多文件上传:

index.jap页面:

<form action="student/upload.do" method="post" enctype="multipart/form-data">
        <input type="file" name="img">
        <input type="file" name="img">
        <input type="file" name="img">
        <input type="file" name="img">
        <button>上传</button>
     </form>

 

注意:

  1.method属性值必须为post

  2..enctype属性值为:multipart/form-data

  3.input元素的name属性值相同

业务处理代码:

    @RequestMapping("/upload")    
        public String upload(HttpServletRequest request,
                @RequestParam("img") CommonsMultipartFile[] files) {
            String url =  request.getServletContext().getRealPath("/upload/");
            File file = new File(url);
            if (!file.exists() && !file.isDirectory()) {            
                try {
                    file.mkdirs();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            StringBuilder imageList = new StringBuilder();
            for (int i = 0; i < files.length; i++) {
                if (!files[i].isEmpty()) {
                    try {
                        String filename = new Date().getTime()
                                + files[i].getOriginalFilename();
                        FileOutputStream os = new FileOutputStream(url + filename);
                        FileInputStream in = (FileInputStream) files[i]
                                .getInputStream();                            
                        byte[] buff = new byte[1024];
                        int len;                    
                        while((len=in.read(buff))!=-1){
                            os.write(buff,0,len);
                        }    
                        os.flush();
                        os.close();
                        in.close();                    
                        imageList.append(filename + ",");
                    } catch (Exception e) {                        
                        System.out.println("上传出错");
                    }
                }
            }        
            return "success";
        }

 

 

同名文件覆盖问题:

解决方案:获取系统当前时间作为文件前缀

代码:

String filename = new Date().getTime()+ files[i].getOriginalFilename();

 

posted @ 2018-03-14 15:50  specialangel  阅读(144)  评论(0)    收藏  举报