我正在寫一個自定義的ftp客戶端,充當來自我們的合作伙伴僱用的分包商的傳入多媒體內容的看門人。我選擇了twisted,因爲它允許我在將文件寫入本地磁盤之前解析文件內容,而且我一直在尋找探索扭曲的場合。我使用'twisted.protocols.ftp.FTPClient.retrieveFile'來獲取文件,將轉義路徑傳遞給文件,並將協議傳遞給'retrieveFile'方法。我想要確保整個文件已被檢索,因爲回調中的事件處理程序要將文件寫入本地磁盤,然後從ftp服務器刪除遠程文件。alla'-E'在lftp中切換行爲客戶。我的問題是,我是否真的需要擔心這個問題,或者我可以假設如果文件沒有被完全檢索就會發生錯誤嗎?檢查由Twisted的FTPClient.retrieveFile方法檢索的文件的完整性
3
A
回答
4
這裏有幾個單元測試行爲。
twisted.test.test_ftp.FTPClientTestCase.test_failedRETR
是最直接相關的一個。它涵蓋了在文件傳輸過程中控制和數據連接丟失的情況。
在我看來,在這方面的測試覆蓋率可以顯着提高。例如,沒有測試涵蓋僅在傳輸正在進行時數據連接丟失的情況。但是,有一件事情使得這個棘手的問題是,FTP不是一個非常健壯的協議。文件傳輸的結束通過數據連接關閉來發信號通知。爲了安全起見,你必須檢查你是否收到了你期望收到的字節數。執行此檢查的唯一方法是提前知道文件大小或使用LIST
(FTPClient.list
)向服務器請求。
考慮到所有這些,我建議當文件傳輸完成時,您總是詢問服務器應該獲得多少字節,並確保它與傳遞到協議的字節數一致。您有時可能會從retrieveFile
返回的Deferred
上發生錯誤,但即使在您不這樣做的情況下,這也可以保證您的安全。
相關問題
- 1. 檢查PHP類完整性的方法
- 2. 如何檢查文件的完整性
- 3. 完整性檢查的文件大小檢查
- 4. 軟件完整性檢查
- 5. 檢查aes密文的完整性
- 6. C#FTP文件完整性檢查
- 7. MD5文件完整性檢查
- 8. SElinux完整性檢查
- 9. Eclipselink完整性檢查器
- 10. 如何檢查下載的開源文件的完整性?
- 11. MySQL查詢檢索完整的URL slug
- 12. 以編程方式檢查文本框的完整性
- 13. 檢查修補程序的完整性
- 14. Python的PDF完整性檢查
- 15. 如何檢查圖像的完整性?
- 16. 如何檢查MySQL的完整性?
- 17. 檢查文件下載(方法)完成
- 18. 在未更改的文件中進行PTC完整性檢查
- 19. 使用md5檢查文件的完整性
- 20. I/O性能完整性檢查 - 檢查文件是否存在
- 21. 算法的訓練階段的完整性檢查
- 22. 一種檢查安裝的perl模塊的完整性的方法?
- 23. 檢索ReFS完整性流校驗和
- 24. KDB/Q有沒有辦法檢查分區表的完整性?
- 25. 用數字檢查數據完整性
- 26. 數據庫設計完整性檢查
- 27. MySQL模式完整性檢查
- 28. CQRS/DDD:檢查參照完整性
- 29. 完整性檢查SSH公鑰?
- 30. 使用MD5檢查完整性
Thx,正是我需要知道的,我可以從FTPFileListProtocol.file對象中選擇大小,並傳遞它以檢查寫入磁盤的文件是否具有預期的大小。 – snarkyname77 2009-11-18 18:41:39