• 技术文章 >Java >Java基础

    java中如何上传文件

    (*-*)浩(*-*)浩2019-11-14 11:58:27原创1837

    在java里面文件上传的方式很多,最简单的依然是FileInputStream、FileOutputStream了,在这里我列举3种常见的文件上传方法代码

    首先呢,使用springMVC原生上传文件方法,需要一些简单的配置,不多说,上图。 (推荐学习:java课程

    java-45.png1.采用spring提供的上传文件的方法

    @RequestMapping("springUpload")
        public String  springUpload(HttpServletRequest request) throws IllegalStateException, IOException
        {
             long  startTime=System.currentTimeMillis();
             //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
            CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
                    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(new File(path));
                    } 
                }
            }
            long  endTime=System.currentTimeMillis();
            System.out.println("Spring方法的运行时间:"+String.valueOf(endTime-startTime)+"ms");
            return "/success"; 
        }

    2.采用file.Transto 来保存上传的文件,这是目前我认为最好的上传方式,也是我最喜欢的上传方式,代码简单,速度快。请看下面代码。

    /*
         * 采用file.Transto 来保存上传的文件
         */
        @RequestMapping("fileUpload2")
        public String  fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException {
             long  startTime=System.currentTimeMillis();
            System.out.println("fileName:"+file.getOriginalFilename());
            String path="E:/"+new Date().getTime()+file.getOriginalFilename();
              
            File newFile=new File(path);
            //通过CommonsMultipartFile的方法直接写文件(注意这个时候)
            file.transferTo(newFile);
            long  endTime=System.currentTimeMillis();
            System.out.println("采用file.Transto的运行时间:"+String.valueOf(endTime-startTime)+"ms");
            return "/success"; 
        }

    3.第三种采用流的方式上传,这种方法在新手学习的时候经常用到,但是我并不喜欢,因为它又慢又难写,请看

    @RequestMapping("fileUpload")
        public String  fileUpload(@RequestParam("file") CommonsMultipartFile file) throws IOException {
              
            //用来检测程序运行时间
            long  startTime=System.currentTimeMillis();
            System.out.println("fileName:"+file.getOriginalFilename());
              
            try {
                //获取输出流
                OutputStream os=new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename());
                //获取输入流 CommonsMultipartFile 中可以直接得到文件的流
                InputStream is=file.getInputStream();
                byte[] bts = new byte[1024];
                //一个一个字节的读取并写入
                while(is.read(bts)!=-1)
                {
                    os.write(bts);
                }
               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"; 
        }

    简单的文件上传页面

    java-46.png

    以上就是java中如何上传文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java
    上一篇:java如何实现序列化 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • jsp怎么写java• java值类型是什么• java怎样安装• Java中常见的几种锁
    1/1

    PHP中文网