ftp 之 使用java將文件上傳到ftp服務器上


1. 在實際的應用重,通常是通過程序來進行文件的上傳。

2. 實現java上傳文件到ftp服務器中

  • 新建maven項目
  • 添加依賴
    <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.3</version>
        </dependency>

     

  • 測試:
    @Test
       public void testFtp1(){
           //創建客戶端對象
           FTPClient ftp = new FTPClient();
           InputStream local=null;
           try {
               //連接ftp服務器
               ftp.connect("192.168.80.161", 21);
               //登錄
               ftp.login("ftpuser", "1111");
               //設置上傳路徑
               String path="/home/ftpuser/image";
               //檢查上傳路徑是否存在 如果不存在返回false
               boolean flag = ftp.changeWorkingDirectory(path);
               if(!flag){
                   //創建上傳的路徑  該方法只能創建一級目錄,在這里如果/home/ftpuser存在則可創建image
                   ftp.makeDirectory(path);
               }
               //指定上傳路徑
               ftp.changeWorkingDirectory(path);
               //指定上傳文件的類型  二進制文件
               ftp.setFileType(FTP.BINARY_FILE_TYPE);
               //讀取本地文件
               File file = new File("mm.jpg");
               local = new FileInputStream(file);
               //第一個參數是文件名
               ftp.storeFile(file.getName(), local);
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                try {
                    //關閉文件流
                    local.close();
                    //退出
                    ftp.logout();
                    //斷開連接
                    ftp.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
       }

     

 

3. 優化java上傳代碼:

  如何解決上傳的圖片重名的問題?如果不解決,那么上傳相同名稱的圖片將會覆蓋之前文件。

  可以通過重寫設置圖片名稱來,即將圖片名為uuid的名稱。

 

//生成上傳文件的名稱
    public static String getFileName(String primitiveFileName){
        //使用uuid生成文件名
        String fileName=UUID.randomUUID().toString();
        //獲取文件后綴
        String suffix=primitiveFileName.substring(primitiveFileName.lastIndexOf("."));
        return fileName+suffix;
    }

2. 當每天上傳的圖片很多時,如何管理這些圖片?

  通常會根據年份,月份,日期,來創建目錄來存放數據。

 //設置上傳路徑
               String basePath="/home/ftpuser/image/";
               Date currentDate = new Date();
               String dateStr=new SimpleDateFormat("yyyy/MM/dd").format(currentDate);
               for(String pathStr:dateStr.split("/")){
                   basePath+=pathStr+"/";
                   boolean flag = ftp.changeWorkingDirectory(basePath);
                   if(!flag){
                       //創建上傳的路徑  該方法只能創建一級目錄,在這里如果/home/ftpuser存在則可創建image
                       ftp.makeDirectory(basePath);
                   }
               }
               //指定上傳路徑
               ftp.changeWorkingDirectory(basePath);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM