回答
棘手的部分是确定中央目录的开始,它发生在文件末尾。由于每个条目具有相同的固定大小,因此可以从文件末尾开始进行一种二进制搜索。二进制搜索试图猜测中央目录中有多少条目。从一些合理的值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