FTPClientを使用してフォルダを作成し、ファイルをアップロードする問題について
需要:FTPClientを使用して、アップロードファイルと保存する必要があるファイルディレクトリに基づいて、FTPサービス側に指定されたファイルディレクトリが存在しない場合、作成します.そうでなければ、対応するファイルディレクトリに直接ファイルを保存します.
テスト:問題が大きくないと感じて、直接コードを書いて、テストの例をします.JAVAサードパーティのFTPClientをツールとして、主なコードは以下の通りです.
すべて順調で、望み通りにFTPディレクトリ/DIRA/DirBが存在しない場合、ディレクトリを作成してtest.txtはDirBディレクトリに書き込まれます.
次にLinuxで発表されたFTPサービスを交換し、テスト例でテストしたところ、作成ディレクトリはfalseに戻り、ディレクトリを作成できず、指定されたディレクトリに切り替えることもできませんでした.まさかlinux権限の問題ですか?
テストを経て、権限の問題などを排除して、APIを見て、FTPClientを呼び出す.printWorkingDirectory()関数では、windowsでパブリッシュされたFTPサービスを使用して、印刷経路が「/」であり、linuxでパブリッシュされたFTPサービスでは、印刷経路が「/home/ftp/」であり、FTPの全経路であることがわかります.
この場合、相対パスを使用してFTPディレクトリを作成します.
ファイルディレクトリをスムーズに作成し、DirAディレクトリにファイルを書き込みます.
最後に、デバッグ中に「/DIRA/DirB」方式を指定してファイルディレクトリを一括作成することはできませんが、間接的な方法でできます.
間接的な方法とは、このようなものです.
テスト:問題が大きくないと感じて、直接コードを書いて、テストの例をします.JAVAサードパーティのFTPClientをツールとして、主なコードは以下の通りです.
public boolean FtpUpload(String fileName, String file, String fileDir) {
FTPClient ftp = new FTPClient();
// FTP , , , , .......
// :
if(fileDir != null) {
ftp.makeDirectory(fileDir);//
ftp.changeWorkingDirectory(fileDir);//
}
// ........
}
windows , ftp , :
FtpUpload("test.txt", "E:\\test.txt", "/DirA/DirB");
すべて順調で、望み通りにFTPディレクトリ/DIRA/DirBが存在しない場合、ディレクトリを作成してtest.txtはDirBディレクトリに書き込まれます.
次にLinuxで発表されたFTPサービスを交換し、テスト例でテストしたところ、作成ディレクトリはfalseに戻り、ディレクトリを作成できず、指定されたディレクトリに切り替えることもできませんでした.まさかlinux権限の問題ですか?
テストを経て、権限の問題などを排除して、APIを見て、FTPClientを呼び出す.printWorkingDirectory()関数では、windowsでパブリッシュされたFTPサービスを使用して、印刷経路が「/」であり、linuxでパブリッシュされたFTPサービスでは、印刷経路が「/home/ftp/」であり、FTPの全経路であることがわかります.
この場合、相対パスを使用してFTPディレクトリを作成します.
FtpUpload("test.txt", "E:\\test.txt", "DirA");
ファイルディレクトリをスムーズに作成し、DirAディレクトリにファイルを書き込みます.
最後に、デバッグ中に「/DIRA/DirB」方式を指定してファイルディレクトリを一括作成することはできませんが、間接的な方法でできます.
間接的な方法とは、このようなものです.
// ,
String[] ftppaths = ftppath.split("/");
for(int i=0; i<ftppaths.length; i++) {
ftp.makeDirectory(ftppaths[i]);
ftp.changeWorkingDirectory(ftppaths[i]);
}