- - PR -
commons.net.ftp.FTPClientで95文字以上のファイルが送信できない。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-08 18:09
commons.net.ftp.FTPClientで95文字以上のファイルが送信出来ません。
ソースは、
とした場合、newFileNameが95文字を超えると、 ERROR:[main] The FTP error occurred. ERROR:[main] FTP REPLY CODE :550 **ここはファイル名**: The system cannot find the path specified. となってしまいます。 Windowsのコマンド上でのFTP,FFFTPで確認しましたが、正常にファイル名は変更できています。 また、 代替案1:短いファイル名で転送してリネーム作戦は、 _ftpClient.storeFile("test", _fis); _ftpClient.rename("test",newFileName); とした所で同様のエラーが発生しました。 代替案2:sendCommandしてやる!作戦は、 _ftpClient.storeFile("test", _fis); _ftpClient.sendCommand("RNFR test"); _ftpClient.sendCommand("RNTO "+ newFileName); とした所で同様のエラーが発生しました。 これは、FTPClientの仕様なのでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2005-11-08 18:33
commonsのFTPClientは使ったことがないので直接的な回答ではありませんが、
1.実際にサーバに送信しているパケットをキャプチャして他のFTPクライアントからのものと比較してみる。 2.該当の処理のソースコードを確認してみる。 せっかくオープンソースのプロダクトなのでソースを見てみない手はないと思いますよ。 | ||||
|
投稿日時: 2005-11-09 11:10
をやってみました。 キャプチャーはetherealを使いました。(面白いですね^^) で、実際にFFFTPとJavaでのテスト環境に微妙な違い(親フォルダーが違う)があったため、その部分をあわせてテストした所、Javaで失敗するパターン場合は、FFFTPでも失敗する事がわかりました。 で、その条件は STORするファイルのフルパスが250桁以上の場合エラー でした。 ここは、憶測ですが多分「FTPのコマンドの総桁数が255桁以上の場合エラー」が正しいのかなと思っていますが、そこまで追試していません。 また、FFFTPはSTORする場合に対象ファイルのフルパスを必ず設定しますが、 (ex: STOR /a/b/c/d/e/f/file.txt) Javaの場合は、CWDした後で、ファイル名だけでSTOR可能ですが (ex: CWD /a/b/c/d/e/f/ の後、STOR file.txt) その場合でも同様のエラーで終了してしまいます。 エラーメッセージも、 550 **ここはファイル名**: The system cannot find the path specified. であるので、「FTPサーバー内部で、STORの際にフルパスにしていて、それが制限値を超えるとエラー」となるのだろう、と推察しています。 一応、エラーの発生する条件がcommonsのFTPClientにはない事がわかったので、ここで調査を打ち切ろうと思いますが、もし ・そりゃ観点が違うよ! とか、 ・その制限値の解除方法知ってる、 という方がいらしたらお教えください。 以上です。 [ メッセージ編集済み 編集者: PAL 編集日時 2005-11-09 11:14 ] | ||||
|
投稿日時: 2005-11-09 19:05
FTPのデーモンとかファイルシステム(OS)は何をお使いでしょうか?
興味があったので、同じことを次の条件で試してみました。 ftpd = proftpd-1.2.10 fs = ext3 (linux) 結果は、 「STORするファイルのフルパスが250桁以上の場合でも正常」 でした。 251という数字、ファイルシステムの制限のような印象です。 windowsをサーバにお使いでしょうか? | ||||
|
投稿日時: 2005-11-09 21:28
話題が逸れてしまいますが、 File f = new File(fileaName); f.createNewFile(); で、fileNameに設定するファイル名(例 c:\temp\XX.txt のXX.txt)の 長さが251(かな?)を超えるとファイルが作成されませんね。(WIN XP) [ メッセージ編集済み 編集者: tarnwo 編集日時 2005-11-09 21:29 ] | ||||
|
投稿日時: 2005-11-10 08:53
WindowsXP(or Windows 2003) + IISでのFTP環境です。 確かにOSの制限でした。 Windowsだとファイルも作れませんね。 そういえば、JavaのプログラムでFTPを使ってファイルを転送しているのですが、 取得元のサーバーは、RedHatEnterprise3 + vsftpd を使用しているのですが、 普通に長めのファイルを取得できていました。 最初の方に上記確認していたのですが、調査の過程でコロッ忘れていました。 まぁ、今回はOSの制限ということで、運用や途中のプログラムにブロックをつけて 対応しました。 ご指摘ありがとうございました。 |
1