回答
棘手的部分是確定中央目錄的開始,它發生在文件末尾。由於每個條目具有相同的固定大小,因此可以從文件末尾開始進行一種二進制搜索。二進制搜索試圖猜測中央目錄中有多少條目。從一些合理的值N開始,並在末尾檢索文件的那一部分 - (N * sizeof(DirectoryEntry))。如果該文件位置不是以中央目錄條目簽名開始的,則N太大 - 一半重複,否則N太小,雙重並重復。與二分搜索一樣,該過程保持當前的上限和下限。當兩者相等時,你已經找到N的值,即條目數。
您點擊網絡服務器的次數最多爲16次,因爲不能超過64K個條目。
這是否比下載整個文件更有效率取決於文件大小。您可能在下載之前請求資源的大小,如果它小於給定的閾值,請下載整個資源。對於大型資源,如果閾值設置得較高,則請求多個偏移將更快,並且整體上對Web服務器徵稅更少。
HTTP/1.1允許下載資源的範圍。對於HTTP/1.0,您別無選擇,只能下載整個文件。
我不知道這是否有幫助,因爲我不是程序員。但在Outlook中,您可以預覽zip文件並查看實際內容,而不僅僅是文件目錄(如果它們是可預覽的文檔,如PDF)。
在ArchView中實現了一個解決方案 「ArchView可以在線打開歸檔文件,無需下載整個歸檔。」 https://addons.mozilla.org/en-US/firefox/addon/5028/
在archview-0.7.1.xpi文件「archview.js」中可以看到他們的javascript方法。
您是否也設法解決此問題? – 2010-08-06 19:23:23
- 1. 如何在沒有下載文件的情況下閱讀pdf中的view.html
- 2. 如何在沒有javascript輸入的情況下閱讀文件?
- 3. 在沒有完全下載的情況下獲取zip/rar結構
- 4. 大.zip文件下載不完整
- 5. WebClient沒有下載完整文件?
- 6. 在沒有Adobe插件的情況下在Web上閱讀PDF文件
- 7. 在不下載的情況下閱讀s3存儲桶上的文件內容
- 8. Node.js在不解壓的情況下讀取zip文件
- 9. 有沒有辦法在Silverlight中沒有Webclient的情況下下載文件?
- 10. 在沒有XSLT文件的情況下閱讀C#中的嵌套XML
- 11. 在沒有LabView的情況下閱讀LabView程序
- 12. Python imaplib下載Gmail文本沒有下載完整附件
- 13. 如何在不下載整個目錄路徑的情況下下載zip文件? (PHP)
- 14. 如何在沒有Office.Interop的情況下閱讀'Extended'MS Word文件標籤?
- 15. 如何在沒有網頁瀏覽器的情況下從網站上下載和閱讀文件?
- 16. 在沒有WMI的情況下獲取完整的CPU名稱
- 17. 在沒有完整重新索引的情況下更新Lucene有效載荷
- 18. 在不下載它的情況下在SharePoint上檢索ZIP文件的內容
- 19. django zip文件沒有得到下載
- 20. 如何在沒有完整路徑的情況下使用grunt.js複製文件?
- 21. 在沒有Oracle Lite的情況下讀取Oracle Lite ODB文件
- 22. 如何在不越獄的情況下閱讀iPhone文件?
- 23. Bash下載文件的腳本只有在以前沒有下載文件的情況下
- 24. 只有在存在ruby的情況下才能下載文件
- 25. 在沒有NSWindowController的情況下加載一個nib文件?
- 26. 如何在沒有Feature.xml文件的情況下卸載功能?
- 27. 如何在沒有中間文件存儲的情況下下載XML文檔?
- 28. 騾文件終點下載不完整的文件沒有EOF
- 29. 在不加載完整文件的情況下讀取部分RAW文件或TIFF文件
- 30. 在沒有訂閱的情況下觸發一個事件
應該只能讀取文件的標題和目錄。參考:http://en.wikipedia.org/wiki/ZIP_%28file_format%29#File_headers – 2010-07-15 17:54:10
你是什麼意思「讀取內容」?你的意思只是壓縮文件的文件名列表? – 2010-07-15 17:54:35
是的,我只需要文件名。內容本身與我無關。 – 2010-07-15 18:09:59