首頁 > 軟體

java實現上傳檔案到FTP

2022-06-23 18:00:32

本文範例為大家分享了java實現上傳檔案到FTP的具體程式碼,供大家參考,具體內容如下

需求說明:將指定檔案上傳到FTP,上傳成功後修改檔名。

獲取檔名及路徑(這裡是從資料庫獲取,所以前面的程式碼就不CV了)

/**
     * 測試上傳
     * @param map 從資料庫獲取到的檔案資訊 (包含檔案路徑FILE_PATH 檔案型別FILE_TYPE等資訊)
     */
     public void testUpdFtpFile(Map<String,Object> map){
         /*上傳附件到FTP*/
         FileInputStream inputStream = null;
         try {
            //找到要上傳的檔案 
             String originfilename = "E:\work\files\"+map.get("FILE_PATH").toString();
             //轉成流
             inputStream = new FileInputStream(originfilename);
            //上傳後的檔名+檔案型別                        
            String ftpName = "上傳到FTP後的檔名."+map.get("FILE_TYPE");
             boolean updFtpFile = FtpClientFile.uploadFile(ftpName,inputStream);
             if(updFtpFile){
                 //列印下紀錄檔
                 System.out.println(("=======檔案已上傳到FTP========"));
             }
         } catch (Exception e) {
             throw new BusinessException("附件上傳失敗!");
         }
     }

FtpClientFile工具類方法

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
 
import com.google.gson.JsonArray;
 
/**
 * ftp 上傳檔案
 * FTPClient commons.net 3.0.1版本
 * @author Lenovo
 *
 */
public class FtpClientFile {
    
    private static final String hostname = "10.xx.xx.xx" ;//FTP IP
    
    private static final int port = 21;//FTP 埠號
    
    private static final String username = "ftpName";//FTP 登入賬號
   
    private static final String password = "ftpPsd"; //FTP 登入密碼
    
    private static final String pathname = "/";//FTP 工作路徑
    
    
    /**
     * 上傳檔案(可供Action/Controller層使用)
     * @param fileName 上傳到FTP伺服器後的檔名稱
     * @param inputStream 輸入檔案流
     * @return
     */
     public static boolean uploadFile(String fileName,FileInputStream inputStream){
         
     boolean flag = false;
     FTPClient ftpClient = new FTPClient();
     //設定超時
     ftpClient.setConnectTimeout(60*60*1000);
     //設定編碼
     ftpClient.setControlEncoding("UTF-8");
     try {
         //連線FTP伺服器
         ftpClient.connect(hostname, port);
         //登入FTP伺服器
         ftpClient.login(username, password);
         //是否成功登入FTP伺服器    
         int replyCode = ftpClient.getReplyCode();
         if(!FTPReply.isPositiveCompletion(replyCode)){
             return flag;
             }
         System.out.println("===========登入FTP成功了==========");
         ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
         //切換路徑 建立路徑
         ftpClient.makeDirectory(pathname);
         ftpClient.changeWorkingDirectory(pathname);
         ftpClient.enterLocalPassiveMode();
         //設定緩衝
         ftpClient.setBufferSize(1024 * 1024 * 20);
         //保持連線
         ftpClient.setKeepAlive(true);
         boolean a = ftpClient.storeFile(new String(fileName.getBytes("utf-8"),"iso-8859-1"), inputStream);
         if(a){
             System.out.println("===========建立檔案成功=============="+a);
                 String fileName2 = fileName+"AAA";
                 boolean status = ftpClient.rename(fileName, fileName2);
                 if(status)
                 System.out.println("===========修改檔名稱成功=============="+status);
             }
         inputStream.close();
         ftpClient.logout();
         flag = true;
         } catch (Exception e) {
             e.printStackTrace();
         } finally{
             if(ftpClient.isConnected()){
                 try {
                     ftpClient.disconnect();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
         return flag;
         
     }
    
     
         
    /* public static void main(String[] args) {
         String originfilename = "C:\Users\Lenovo\Desktop\xx.txt";
         FileInputStream inputStream;
         try {
            inputStream = new FileInputStream(new File(originfilename));
            boolean a = uploadFile("xx.txt","/104/",inputStream);
            System.out.println("上傳檔案成功============"+a);
         } catch (FileNotFoundException e) {
            e.printStackTrace();
         }
    }*/
     
     
}

上傳檔案到FTP時 注意:是否有許可權登入伺服器/上傳檔案等操作。

預設在瀏覽器輸入自己的ftp地址存取下看看 ftp://10.xx.xx.xx:埠號 登入看看

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com