2012-02-20 7 views
1

FTPからローカルシステム(Windows)に圧縮ファイルをコピーしようとしています。転送モードはdefault mode (ASCII)です。ファイルがコピーされている、私は転送中に何の問題もないです。
問題は、ローカルシステム上にコピーされたファイルとFTP上のファイルのサイズが異なることです。FTPからウィンドウへのコピー中に圧縮データが失われる

FTP_file_size -> 12,812,085 
Copied_file_size->12,551 

上記のファイルは同じである必要があります。

今、転送で何が問題になっているのか理解できません。私が参照してください使用していますスクリプトの

Why am I getting "File not found" errors with this Perl script using Net::FTP?

+0

私もバイナリモードで試しましたが、同じことが起こっています。 $ ftp-> binaryを追加しました。私のコードでは$ ftp-> get( "$ temp")のすぐ上にあります。 – Maverick

+0

Net :: FTPモジュールがサポートしていないようです MODE->転送するファイルの転送モード(ストリーム、ブロック、または圧縮)を指定します。 – Maverick

+0

試してみることの1つは、元のファイルと転送されたファイルを16進表示で比較することです。また、ファイルのサイズをバイト単位で確認できますか? 12,812,085はおよそ12551キロバイトなので、違いがどれほど大きいかを知ることは容易ではありません。 – Joni

答えて

3

あなたが転送するバイナリ(タイプ "I")モードを使用する必要があります。そうしないと、FTPクライアントは行末の文字をZIP形式を破損するローカルの規則(WindowsではCR-LF)に変換します。

+0

@ Joni Salonen、実際にファイルを解凍すると、ファイルが壊れていると言われています。(nは、$ ftp-> binaryの代わりに$ ftp-> binary(type "I")を使用するように提案しました。 – Maverick

+0

Windowsの機能をフルサポートしながら、FTPファイル転送をサポートする他のモジュールがありますか – Maverick

+0

@ user1202644これはWindowsを完全にサポートしているので問題ありません。 –

関連する問題