2012-02-20 94 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 2012-02-20 11:37:41

+0

看來Net :: FTP模塊不支持 MODE->指定要傳輸的文件的傳輸模式(流,塊或壓縮)。 – Maverick 2012-02-20 11:46:19

+0

您可以嘗試的一件事是在十六進制查看器中比較原始文件和傳輸的文件。此外,你可以檢查文件的大小是多少字節? 12,812,085大約是12551千字節,因此不難看出有多大的差異。 – Joni 2012-02-20 12:11:44

回答

3

你必須使用二進制(類型爲 「I」)模式來傳輸。否則,FTP客戶端會將行尾字符轉換爲會破壞ZIP格式的本地約定(在Windows上:CR-LF)。

+0

@ Joni Salonen,實際上,當我提取文件說它的文件損壞:(n,因爲你建議我使用$ ftp-> binary(輸入「I」)而不是$ ftp-> binary;我已經嘗試過了,但現在雙擊腳本後,它顯示一秒,然後消失 – Maverick 2012-02-20 13:18:53

+0

我們是否有任何其他模塊支持FTP文件傳輸以及完全支持Windows功能 – Maverick 2012-02-20 13:35:50

+0

@ user1202644它完全支持Windows,這就是問題所在。使用二進制格式,因爲ZIP是一種二進制格式 – 2012-02-20 14:57:39