使用apache commons-net包實現文件ftp上傳

jopen 11年前發布 | 59K 次閱讀 Java開發 commons-net

使用apache commons-net包實現文件ftp上傳

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.SocketTimeoutException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply;

public class FtpTool {

private static FTPClient ftp;

public static FTPClient ftp_conn(String server, String user, String password) {

ftp = new FTPClient(); // ftp.setDefaultTimeout(5000); try { int reply;

ftp.connect(server); // ftp.connect(server,21,InetAddress.getLocalHost(),21); System.out.println("Connected to " + server + "."); System.out.println(ftp.getReplyString());

reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); System.out.println("FTP server refused connection."); return null; } else { ftp.login(user, password); System.out.println("Login success."); ftp.pasv(); ftp.enterLocalPassiveMode(); } } catch (SocketTimeoutException ste) { ste.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return ftp; }

/**

  • @param ftp
  • @param remoteFile
  • @param localFile
  • @return
  • @throws FileNotFoundException */ public static boolean uploadToFtp(FTPClient ftp, String remoteFile, String localFile) throws FileNotFoundException {

    boolean result = false; if (ftp == null) { return result; }

    String dir = "/"; remoteFile = remoteFile.replaceAll("\\", "/"); if (remoteFile.indexOf("/") != -1) { dir = (String) remoteFile.subSequence(0, remoteFile.lastIndexOf("/")); }

    FileInputStream fis = new FileInputStream(new File(localFile));

    System.out.println("Upload " + localFile + " To " + remoteFile); try { ftp.makeDirectory(dir); ftp.changeWorkingDirectory(dir); ftp.setFileType(FTP.BINARY_FILE_TYPE); // 以BINARY格式傳送文件 if (ftp.storeFile(remoteFile, fis)) { result = true; } // System.out.println(ftp.getReplyCode()); fis.close(); } catch (Exception e) { e.printStackTrace(); }

    return result; }

    public static void logout(FTPClient ftp) { try { if (ftp != null) { ftp.logout(); ftp.disconnect(); } ftp = null; } catch (IOException e) { e.printStackTrace(); } }

}

測試代碼;

import java.io.FileNotFoundException; import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;

public class FtpTest {

/**

  • @param args */ public static void main(String[] args) {

String ftp_server = "192.168.0.1"; String ftp_user = "username"; String ftp_password ="password"; FTPClient ftp = FtpTool.ftp_conn(ftp_server, ftp_user, ftp_password);

String localFilename="D:\html\test.html";

String remoteFilename="/mytest/002/test.html";

 System.out.println("upload ...");
 System.out.println(localFilename + " to " + remoteFilename);
 try {
  FtpTool.uploadToFtp(ftp, remoteFilename, localFilename);

} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }

try { ftp.logout(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { ioe.printStackTrace(); } }

}

}

相關jar包: apache commons-net-1.4.1.jar</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!