溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中上傳文件的方法(代碼示例)

發布時間:2020-05-09 13:56:34 來源:億速云 閱讀:926 作者:小新 欄目:編程語言

今天小編給大家分享的是java中上傳文件的方法,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

在java里面文件上傳的方式很多,最簡單的依然是FileInputStream、FileOutputStream了,在這里我列舉3種常見的文件上傳方法代碼

首先呢,使用springMVC原生上傳文件方法,需要一些簡單的配置,不多說,上圖。

java中上傳文件的方法(代碼示例)1.采用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中上傳文件的方法(代碼示例)

關于java中上傳文件的方法就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女