使用Java上传到FTP
我只是想知道是否有一种简单的方法可以将一个小文件上传到ftp服务器。我已经查看了ApacheCommonsNet库,但老实说,这似乎相当复杂。有没有更简单的方法将小文件上传到ftp使用Java上传到FTP,java,ftp,uploading,Java,Ftp,Uploading,我只是想知道是否有一种简单的方法可以将一个小文件上传到ftp服务器。我已经查看了ApacheCommonsNet库,但老实说,这似乎相当复杂。有没有更简单的方法将小文件上传到ftp 最后使用了Apache Commons网络库,这并不难。Apache Commons库有这个实用工具org.Apache.Commons.Net.ftp.FTPClient: import org.apache.commons.net.ftp.FTPClient; FTPClient client=新的FTPCli
最后使用了Apache Commons网络库,这并不难。Apache Commons库有这个实用工具
org.Apache.Commons.Net.ftp.FTPClient
:
import org.apache.commons.net.ftp.FTPClient;
FTPClient client=新的FTPClient();
String sFTP=“ftp.miservidor.com”;
字符串sUser=“usuario”;
字符串sPassword=“password”;
试一试{
client.connect(sFTP);
boolean login=client.login(sUser,sPassword);
}捕获(ioe异常ioe){}
完整示例:
来自此链接:。不需要外部库
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();
}
我想,我已经找到了一个使用org.apache.commons.net.ftp.FTPClient的非常好的示例
登录后如何上传文件?这很好-只是一个小的更正-用户和密码必须使用urlcoder.encode函数进行编码
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();
}
}
}
}