使用Java上传到FTP

我只是想知道是否有一种简单的方法可以将一个小文件上传到ftp服务器。 我已经检查了Apache Commons Net库,但说实话这似乎很复杂。 有没有更简单的方法将小文件上传到ftp?

使用Apache Commons Net Library结束,并不是太难。

从此链接: 使用URLConnection类将文件上载到FTP服务器 。 无需外部库。

String ftpUrl = "ftp://%s:%s@%s/%s;type=i"; String host = "www.myserver.com"; String user = "tom"; String pass = "secret"; String filePath = "E:/Work/Project.zip"; String uploadPath = "/MyProjects/archive/Project.zip"; ftpUrl = String.format(ftpUrl, user, pass, host, uploadPath); System.out.println("Upload URL: " + ftpUrl); try { URL url = new URL(ftpUrl); URLConnection conn = url.openConnection(); OutputStream outputStream = conn.getOutputStream(); FileInputStream inputStream = new FileInputStream(filePath); byte[] buffer = new byte[BUFFER_SIZE]; int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } inputStream.close(); outputStream.close(); System.out.println("File uploaded"); } catch (IOException ex) { ex.printStackTrace(); } 

使用Apache commons lib有这个实用程序org.apache.commons.net.ftp.FTPClient:

http://commons.apache.org/

 import org.apache.commons.net.ftp.FTPClient; FTPClient client = new FTPClient(); String sFTP = "ftp.miservidor.com"; String sUser = "usuario"; String sPassword = "password"; try { client.connect(sFTP); boolean login = client.login(sUser,sPassword); } catch (IOException ioe) {} 

完整示例: http : //www.google.es/url? sa=t& rct= j&q=& esrc= s&source= web&cd=2&ved= 0CD8QFjAB&url= http% 3A%2F%2Fcommons.apache.org%2Fproper%2Fcommons-net% 2Fexamples %2Fftp%2FFTPClientExample.java&EI = JGLUUdsrotHsBtj9gNgI&USG = AFQjCNHymPhHZOKh2S4yuLMTYHTVTnQ02g&SIG2 = 8kJSz_Gl-vsPECe8sIxLGA&BVM = bv.48705608,d.ZGU及CAD = RJA

我想,我在这里找到了一个非常好的使用org.apache.commons.net.ftp.FTPClient的样本

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; /** * A program that demonstrates how to upload files from local computer * to a remote FTP server using Apache Commons Net API. * @author www.codejava.net */ public class FTPUploadFileDemo { public static void main(String[] args) { String server = "www.myserver.com"; int port = 21; String user = "user"; String pass = "pass"; FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(server, port); ftpClient.login(user, pass); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // APPROACH #1: uploads first file using an InputStream File firstLocalFile = new File("D:/Test/Projects.zip"); String firstRemoteFile = "Projects.zip"; InputStream inputStream = new FileInputStream(firstLocalFile); System.out.println("Start uploading first file"); boolean done = ftpClient.storeFile(firstRemoteFile, inputStream); inputStream.close(); if (done) { System.out.println("The first file is uploaded successfully."); } // APPROACH #2: uploads second file using an OutputStream File secondLocalFile = new File("E:/Test/Report.doc"); String secondRemoteFile = "test/Report.doc"; inputStream = new FileInputStream(secondLocalFile); System.out.println("Start uploading second file"); OutputStream outputStream = ftpClient.storeFileStream(secondRemoteFile); byte[] bytesIn = new byte[4096]; int read = 0; while ((read = inputStream.read(bytesIn)) != -1) { outputStream.write(bytesIn, 0, read); } inputStream.close(); outputStream.close(); boolean completed = ftpClient.completePendingCommand(); if (completed) { System.out.println("The second file is uploaded successfully."); } } catch (IOException ex) { System.out.println("Error: " + ex.getMessage()); ex.printStackTrace(); } finally { try { if (ftpClient.isConnected()) { ftpClient.logout(); ftpClient.disconnect(); } } catch (IOException ex) { ex.printStackTrace(); } } } }