■ FTPサーバにあるファイルのサイズを取得するには?

[Visual C++ Q & A 掲示板] [過去ログの一覧]


VCユーザ 2007/12/27(木) 12:49:08 <初心者>
FtpFindFirstFileを使用して、ファイルサイズを取得しようとしているのですが、 
WIN32_FIND_DATA構造体に正しく情報が格納されません。 
原因として何が考えられるでしょうか?

シャノン 2007/12/27(木) 14:19:06 <常連>
そもそも、FTPというプロトコルの仕様上、ファイルサイズを得る確実な方法はありません。
ないわけではないのですが、正式な仕様になったのはつい最近で、以前は非公式な仕様でしたし、対応しているサーバはごく少数と言っていいと思います。

では、一般的なFTPクライアントはどうしているのかと言うと、ファイルリストから得られるサイズを解析してます。
Windows上のコマンドプロンプトでdirと打つと、ファイルリストの中にファイルサイズが出てきますが、ここからファイルサイズを得ているのです。
で、このファイルリストの書式はFTP規格で決まっていませんし、サーバとして使われることが多いUnix系OSでは、Windowsとはまったく違う書式になります。
要するに、FTPサーバが、FtpFindFirstFileが理解できる形でのファイルサイズを返していない可能性が高いです。
要約すれば、FtpFindFirstFileではファイルサイズが取得できないサーバです、ということです。

シャノン 2007/12/27(木) 15:48:41 <常連>
おや、マルチだった。
両方にちゃんとしたレスくださいね。

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200712/07120045.txt

keichan 2007/12/27(木) 17:42:28
もう一個追加。

http://www.play21.jp/board/formz.cgi?id=dixq&resno=12941#12944

VCユーザ  2008/01/14(月) 17:00:28
[[解決]]

遅くなりましたが、回答ありがとうございました。
>FTPサーバが、FtpFindFirstFileが理解できる形でのファイルサイズを返していない可能性が高いです。
→どうもそのようです。とりあえずはサイズ取得不可ということで解決しました。

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library