Java FTP上载中出错“;553无法创建文件";
我使用上述代码在服务器位置192.168.0.210上传一个名为“data.doc”的文件。 我的服务器的目标位置是fileserver/filesbackup/Emac/Java FTP上载中出错“;553无法创建文件";,java,ftp,ftp-client,Java,Ftp,Ftp Client,我使用上述代码在服务器位置192.168.0.210上传一个名为“data.doc”的文件。 我的服务器的目标位置是fileserver/filesbackup/Emac/ 尽管服务器连接成功,但我最终收到错误“553无法创建文件”。我怀疑我以错误的方式给出了目标格式。请告诉我如何解决此问题?问题是您试图将文件上载到目录。您应该指定目标文件名,而不是目标目录 当您在另一个FTP客户端中尝试相同的方法时,它是否有效 [更新] 下面是一些(未经测试,因为我没有FTP服务器)代码,它们以更短的形式更好
尽管服务器连接成功,但我最终收到错误“553无法创建文件”。我怀疑我以错误的方式给出了目标格式。请告诉我如何解决此问题?问题是您试图将文件上载到目录。您应该指定目标文件名,而不是目标目录 当您在另一个FTP客户端中尝试相同的方法时,它是否有效 [更新] 下面是一些(未经测试,因为我没有FTP服务器)代码,它们以更短的形式更好地处理错误
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPFile;
import java.io.*;
public class FTPUpload{
public static boolean uploadfile(String server,String username,String Password,String source_file_path,String dest_dir){
FTPClient ftp=new FTPClient();
try {
int reply;
ftp.connect(server);
ftp.login(username, Password);
System.out.println("Connected to " + server + ".");
System.out.print(ftp.getReplyString());
reply = ftp.getReplyCode();
if(!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.err.println("FTP server refused connection.");
return false;
}
System.out.println("FTP server connected.");
InputStream input= new FileInputStream(source_file_path);
ftp.storeFile(dest_dir, input);
System.out.println( ftp.getReplyString() );
input.close();
ftp.logout();
} catch(Exception e) {
System.out.println("err");
e.printStackTrace();
return false;
} finally {
if(ftp.isConnected()) {
try {
ftp.disconnect();
} catch(Exception ioe) {
}
}
}
return true;
}
public static void main(String[] args) {
FTPUpload upload = new FTPUpload();
try {
upload.uploadfile("192.168.0.210","muruganp","vm4snk","/home/media/Desktop/FTP Upload/data.doc","/fileserver/filesbackup/Emac/");
} catch (Exception e) {
e.printStackTrace();
}
}
}
哇!谢谢将目标位置更改为/fileserver/filebackup/Emac/data.doc:)是否有可能在文件名中插入字符串。因为程序使用的文件名将是在我的程序中用作字符串的日期。
“Output/”+date+“\u RB”+”.zip“
,其中日期是字符串。。。我怎样才能在上述程序的源代码和目标代码中使用它呢。用于形成文件名的表达式看起来已经很好了。是的。我会尽力让你知道的
package so3972768;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
public class FtpUpload {
private static void check(FTPClient ftp, String cmd, boolean succeeded) throws IOException {
if (!succeeded) {
throw new IOException("FTP error: " + ftp.getReplyString());
}
}
private static String today() {
return new SimpleDateFormat("yyyy-MM-dd").format(new Date());
}
public void uploadfile(String server, String username, String Password, String sourcePath, String destDir) throws IOException {
FTPClient ftp = new FTPClient();
ftp.connect(server);
try {
check(ftp, "login", ftp.login(username, Password));
System.out.println("Connected to " + server + ".");
InputStream input = new FileInputStream(sourcePath);
try {
String destination = destDir;
if (destination.endsWith("/")) {
destination += today() + "-" + new File(sourcePath).getName();
}
check(ftp, "store", ftp.storeFile(destination, input));
System.out.println("Stored " + sourcePath + " to " + destination + ".");
} finally {
input.close();
}
check(ftp, "logout", ftp.logout());
} finally {
ftp.disconnect();
}
}
public static void main(String[] args) throws IOException {
FtpUpload upload = new FtpUpload();
upload.uploadfile("192.168.0.210", "muruganp", "vm4snk", "/home/media/Desktop/FTP Upload/data.doc", "/fileserver/filesbackup/Emac/");
}
}