文件未在java的Ftp服务器上上载?
大家好,我正在做一个项目,我需要用java独立应用程序在ftp服务器上上传文件文件未在java的Ftp服务器上上载?,java,ftp,apache-commons,ftp-client,Java,Ftp,Apache Commons,Ftp Client,大家好,我正在做一个项目,我需要用java独立应用程序在ftp服务器上上传文件 import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import org.apache.commons.io.IOUtils; import org.apache.com
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.SocketException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
public class Ftpdemo {
public static void main(String args[]) {
// get an ftpClient object
FTPClient ftpClient = new FTPClient();
ftpClient.setConnectTimeout(300);
FileInputStream inputStream = null;
try {
// pass directory path on server to connect
ftpClient.connect("ftp.mydomain.in");
// pass username and password, returned true if authentication is
// successful
boolean login = ftpClient.login("myusername", "mypassword");
if (login) {
System.out.println("Connection established...");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
inputStream = new FileInputStream("/home/simmant/Desktop/mypic.png");
boolean uploaded = ftpClient.storeFile("user_screens/test3.png",inputStream);
if (uploaded) {
System.out.println("File uploaded successfully !");
} else {
System.out.println("Error in uploading file !");
}
// logout the user, returned true if logout successfully
boolean logout = ftpClient.logout();
if (logout) {
System.out.println("Connection close...");
}
} else {
System.out.println("Connection fail...");
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
对于1或2 kb的数据,它可以正常工作,但当我尝试上载50 kb和100 kb的文件时,它就不能正常工作。上载到服务器上的图像为空 据我所知,代码没有问题。正如您所说,1或2 kb的数据上传工作正常。所以,在我看来,你的互联网有问题。可能是上传50KB或更大的文件太慢了。据我所知,代码没有问题。正如您所说,1或2 kb的数据上传工作正常。所以,在我看来,你的互联网有问题。上载50 kb或更大的文件可能太慢。您的代码没有任何错误,只是文件或internet速度有问题。这里的代码工作正常,并且建议不要直接使用FTP详细信息。请避免从应用程序中使用这些内容。您有更好的选择,可以为与服务器相关的应用程序使用web服务东西
祝您好运您的代码没有任何错误,只是文件或internet速度有问题。代码在这里运行良好,并且建议不要直接使用FTP详细信息。请避免从应用程序中使用这些内容。您可以更好地选择使用web服务来处理与服务器相关的内容。
祝您好运您似乎没有正确创建连接实例。 请参考我的工作代码:
public class FTPUploader {
FTPClient ftp = null;
public FTPUploader() throws Exception {
ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(new FileOutputStream("c:\\ftp.log"))));
int reply;
ftp.connect(Constant.FTP_HOST);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
throw new Exception(Constant.FTP_SERVER_EXCEPTION);
}
ftp.login(CommonConstant.FTP_USERNAME, Constant.FTP_PASSWORD);
ftp.setFileType(FTP.TELNET_TEXT_FORMAT);
ftp.enterLocalPassiveMode();
}
public boolean uploadFile(File localFileFullName, String fileName) throws Exception {
InputStream input = new FileInputStream(localFileFullName);
boolean reply = this.ftp.storeFile("'" + fileName +"'", input);
disconnect();
return reply;
}
public void disconnect() {
if (this.ftp.isConnected()) {
try {
this.ftp.logout();
this.ftp.disconnect();
} catch (IOException e) {
System.out.println(this.getClass()+ e);
}
}
}
public static void main(String[] args) throws Exception {
System.out.println("Start");
FTPUploader ftpUploader = new FTPUploader();
System.out.println(ftpUploader.uploadFile(new File("C:\\test.txt"), "Destinate_DIR"));
System.out.println("Done");
}
}
祝你一切顺利 您似乎没有正确创建连接实例。 请参考我的工作代码:
public class FTPUploader {
FTPClient ftp = null;
public FTPUploader() throws Exception {
ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(new FileOutputStream("c:\\ftp.log"))));
int reply;
ftp.connect(Constant.FTP_HOST);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
throw new Exception(Constant.FTP_SERVER_EXCEPTION);
}
ftp.login(CommonConstant.FTP_USERNAME, Constant.FTP_PASSWORD);
ftp.setFileType(FTP.TELNET_TEXT_FORMAT);
ftp.enterLocalPassiveMode();
}
public boolean uploadFile(File localFileFullName, String fileName) throws Exception {
InputStream input = new FileInputStream(localFileFullName);
boolean reply = this.ftp.storeFile("'" + fileName +"'", input);
disconnect();
return reply;
}
public void disconnect() {
if (this.ftp.isConnected()) {
try {
this.ftp.logout();
this.ftp.disconnect();
} catch (IOException e) {
System.out.println(this.getClass()+ e);
}
}
}
public static void main(String[] args) throws Exception {
System.out.println("Start");
FTPUploader ftpUploader = new FTPUploader();
System.out.println(ftpUploader.uploadFile(new File("C:\\test.txt"), "Destinate_DIR"));
System.out.println("Done");
}
}
祝你一切顺利 “它对数据工作正常”,这里您指的是什么类型的数据?您能告诉我您尝试了多少kb的数据吗..我问您尝试了什么类型的“数据”,请仔细阅读我的评论?我正在处理图像..您在问题中说“它对数据工作正常…”,所以问您,对于什么类型的数据,它在工作?“它对数据工作正常”,这里您指的是什么类型的数据?您能告诉我您尝试了多少kb的数据吗..我在问您尝试了什么类型的“数据”,请仔细阅读我的评论?我正在处理图像..您在问题中说“它对数据工作正常…”,所以问你,它在为什么样的数据工作?谢谢Bhoopen,我已经找到了解决问题的方法。但是你的代码看起来也很有趣。谢谢Bhoopen,我已经找到了解决问题的方法。但是你的代码看起来也很有趣。