私は com.jscape.FileTransfer API を使用して FTP の問題を抱えていましたが、これはしばらく理解できませんでした。これが私のコードです:
public void do FTPTest() {
FileTransfer f = protocol.equalsIgnoreCase("FTP") ? new FtpTransfer(ftpHost, userName, password, new Integer((int) port)) : (protocol.equalsIgnoreCase("SFTP") ? new SftpTransfer(
ftpHost,
userName,
password,
new Integer((int) port)) : null);
try {
f.connect();
f.setAuto();
System.out.println(f.getDir());
f.upload("test".getBytes(), "ktest1.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
このコードは、単純に FTP/SFTP サーバーに接続し、「ktest.txt」というファイルをアップロードします。
FTP/SFTP サイトのベース ディレクトリにファイルをアップロードしようとすると、問題が発生します。
ケース 1: FTP サイト 'A' に接続する
f.getDir() --> '/'
f.upload() --> SUCCEEDS
ケース 2: SFTP サイト 'B' に接続する
f.getDir() --> '/'
f.upload() --> FAILS (with permission denied error)
でも、
ケース 3: SFTP サイト 'B' への接続
f.getDir() --> '/'
f.setDirUp()
f.getDir() --> ''
f.upload() --> SUCCEEDS
setDirUp() を実行したときの動作に注意してください
サイトAで同じことをしようとすると、
ケース 4: FTP サイト 'A' に接続する
f.getDir() --> '/'
f.setDirUp() (permission denied error)
ファイルをアップロードする前に setDir('testFolder') を実行すると、すべてのケースが成功します。つまり、ベースディレクトリにないディレクトリです。
'/' --> '' から setDirUp を実行すると、ベース ディレクトリにファイルをアップロードする方法がわかりません。「/」から UP するとどうなるか。とは '' ?
また、一部の FTP サイトで「/」へのアップロードがどのように機能するかについても説明します。
ところで、両方の FTP サイトでは、WinSCP などのクライアントを使用して問題なくファイルをベース ディレクトリにアップロードできます。