码迷,mamicode.com
首页 > Web开发 > 详细

多文件上传

时间:2016-08-23 14:31:58      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:

配置:
<!-- 多部分文件上传 -->
<bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     <property name="maxUploadSize"value="104857600"/>
     <property name="maxInMemorySize"value="4096"/>
     <property name="defaultEncoding"value="UTF-8"></property>
</bean>

这是一个普通的上传
/*
     * 通过流的方式上传文件
     * @RequestParam("file") 将name=file控件得到的文件封装成CommonsMultipartFile 对象
     */
    @RequestMapping("fileUpload")
    publicString  fileUpload(@RequestParam("file") CommonsMultipartFile file) throwsIOException {
                  
        //用来检测程序运行时间
        long  startTime=System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
         
        try{
            //获取输出流
            OutputStream os=newFileOutputStream("E:/"+newDate().getTime()+file.getOriginalFilename());
            //获取输入流 CommonsMultipartFile 中可以直接得到文件的流
            InputStream is=file.getInputStream();
            inttemp;
            //一个一个字节的读取并写入
            while((temp=is.read())!=(-1))
            {
                os.write(temp);
            }
           os.flush();
           os.close();
           is.close();
         
        catch(FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        long  endTime=System.currentTimeMillis();
        System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return"/success"
    }

这是一个springmvc file.Transto 上传的

    @RequestMapping("fileUpload2")
    publicString  fileUpload2(@RequestParam("file") CommonsMultipartFile file) throwsIOException {
         long  startTime=System.currentTimeMillis();
        System.out.println("fileName:"+file.getOriginalFilename());
        String path="E:/"+newDate().getTime()+file.getOriginalFilename();
         
        File newFile=newFile(path);
        //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
        file.transferTo(newFile);
        long  endTime=System.currentTimeMillis();
        System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");
        return"/success"
    }
这是springMVC 最快的上传
*采用spring提供的上传文件的方法
     */
    @RequestMapping("springUpload")
    publicString  springUpload(HttpServletRequest request) throwsIllegalStateException, IOException
    {
         long  startTime=System.currentTimeMillis();
         //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver=newCommonsMultipartResolver(
                request.getSession().getServletContext());
        //检查form中是否有enctype="multipart/form-data"
        if(multipartResolver.isMultipart(request))
        {
            //将request变成多部分request
            MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
           //获取multiRequest 中所有的文件名
            Iterator iter=multiRequest.getFileNames();
             
            while(iter.hasNext())
            {
                //一次遍历所有文件
                MultipartFile file=multiRequest.getFile(iter.next().toString());
                if(file!=null)
                {
                    String path="E:/springUpload"+file.getOriginalFilename();
                    //上传
                    file.transferTo(newFile(path));
                }
                 
            }
           
        }
        long  endTime=System.currentTimeMillis();
        System.out.println("方法三的运行时间:"+String.valueOf(endTime-startTime)+"ms");
    return"/success"
    }
测试结果:
fileName:test.rar
方法一的运行时间:14712ms
fileName:test.rar
方法二的运行时间:5ms
方法三的运行时间:4ms

多文件上传

标签:

原文地址:http://www.cnblogs.com/dengheng/p/5798960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!