我檢查了你的代碼,它的工作原理。我只將文件類型聲明更改爲二進制文件,這對於XML文件可能不需要。 這裏是我完整的代碼以供參考:
package apachenet.ftp;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
public class App {
public static void main(String[] args) {
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect(/*Util.getProductsXMLFTPServer()*/"127.0.0.1");
client.login(/*Util.getProductsXMLFTPUser()*/"pwyrwinski",
/*Util.getProductsXMLFTPPassword()*/"secret");
client.setFileType(FTP.BINARY_FILE_TYPE); // optional
fis = new FileInputStream(
new File(/* Util.getProductsXMLFTPInputFilePath() */"/home/pwyrwinski",
/* Util.getProductsXMLFTPOutputFileName() */"img.png"));
client.changeWorkingDirectory(/*Util.getProductsXMLFTPUploadPath()*/ "someDir");
client.storeFile(/*Util.getProductsXMLFTPOutputFileName()*/"img_bis.png", fis);
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
正如你可以看到它的大致一樣的你。 Util
類調用被替換爲原始數據。
當我運行它時,文件/home/pwyrwinski/img.png
上傳到ftp服務器上的{FTP_USER_ROOT}/someDir
目錄,名稱更改爲img_bis.png
。我認爲這正是你想達到的目標。
讓我們回到你的問題。
- 嘗試檢查從
Util.getProductsXMLFTPUploadPath()
返回的內容。我的猜測並不是你期待的 - 所以在你的IDE中進行調試或者打印到控制檯。
- 檢查從
Util.getProductsXMLFTPUploadPath()
返回的路徑 調用以斜槓開始,它不應該。
更新1. 是否豬病/home/domainname/public_html/guest
服務器上存在嗎?
添加下面的方法到類:
private static void showServerReply(FTPClient ftpClient) {
String[] replies = ftpClient.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
後每 FTP客戶端的方法調用調用它。這將爲您提供每個命令結果的代碼和說明。我懷疑client.changeWorkingDirectory(...)
以錯誤結尾,可能是:550 Permission Denied (or No such file or folder)
。
下一頁修改爲:
client.login(Util.getProductsXMLFTPUser(), Util.getProductsXMLFTPPassword());
System.out.println(client.printWorkingDirectory()); // added this line!
這將告訴我們什麼是在登錄後,當前的工作目錄
請發表您的結果。
我驗證了路徑。這是正確的。我嘗試刪除「/」,但它仍然是一樣的。不要超出我提到的目錄。 – 2013-03-03 02:05:15
我已更新我的文章(更新1)。 – 2013-03-03 03:04:23
非常感謝。這對我幫助很大。我將參數更改爲「public_html/guest」而不是「/ home/domainuser/public_html/guest」。似乎它試圖從當前位置查找完整的目錄路徑。它給了我一個錯誤消息,說目錄不存在。再次感謝。它像魔術一樣工作。 – 2013-03-08 05:55:59