WININET.DLLのFtpGetFileSize()で4GB以上のファイルサイズが取得できない。

(dwFileSizeHighに0しか返ってこない)
かわりにFtpFindFirstFile()を使ってみてもだめでした。

なぜでしょう?または代替案はないですか?
ちなみにFTPサーバはIISのやつ、ファイルシステムはNTFSです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/06/15 15:20:10
  • 終了:2006/06/16 08:53:08

回答(1件)

id:kurukuru-neko No.1

kurukuru-neko回答回数1844ベストアンサー獲得回数1552006/06/15 20:38:32

ポイント60pt

IISに4Gigabyteの制限がありますこれに

あたってませんか?

http://support.microsoft.com/default.aspx?scid=kb;en-us;185093

Widows 2003サーバだとIIS+サービスパックによっては、

4G超えることが出来ようです。

ブラウザのアドレスバーに

ftp://xxxxxxx/

でアクセスして 4G超のファイルは

保存は出来ますか?


FTPサーバをIIS以外のLinux等のもので

確認する事をお勧めします。

KNOPPIX

http://unit.aist.go.jp/itri/knoppix/win/

id:ohmix1

ありがとうございます。


ブラウザでもサイズがおかしいです。

でも、ftp.exeではちゃんと表示されるので、FTPサーバの問題ではないと思います。


とりあえず、以下の手順で回避できました。

1. FTPのSIZEコマンド発行

FtpCommand(hConn, FALSE, FTP_TRANSFER_TYPE_ASCII, _T("SIZE file.bin"), 0, NULL);

2. レスポンス取得

InternetGetLastResponseInfo( &dwRet, szBuff, &dwBuffSize);

3. 数値に変換

__int64 filesize = _tstoi64(szBuff+3);

2006/06/16 08:52:07
  • id:kurukuru-neko

    LinuxのFTPサーバで7G位のファイル
    を作成して実験してみました。

    ブラウザ(IE)で4G超のファイルをみると
    サイズが 4294967295 = 3.99Gとなってます。

    ブラウザ(Opera)で4G超のファイルをみると
    サイズが実サイズ-4Gでダウンロードできない。

    Linux側でtcpdumpをしてみるとLISTコマンドの
    Responseでは正しいファイルサイズを応答して
    いるのでWindows側で制限をしているようです。

  • id:ohmix1
    kurukuru-nekoさん、わざわざありがとうございます。

    IISのFTPサーバでも同様です。
    ftp.exeでは正しいファイルサイズが得られているので、
    IE(WININET.DLL)が原因と思われましたので、MSに問合せしました。

    以上

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません