在浏览器中查看大文本文件

时间:2009-08-16 10:15:17

标签: php browser text large-files

我需要编写一个文本文件查看器(不是目录树,而是实际的文件内容),以便在浏览器中使用。它将用于查看大文件。我想让用户能够实际访问,浏览文件,即prev page&下一页按钮,而每个页面只显示文件的一部分。

两个问题:

  • 无论如何都要通过POST(或其他东西)传递文件描述符,以便在每个页面上我可以继续读取已经打开的文件,而不是重新开始(再次 - 大文件)
  • 有没有办法向后读取文件?浏览文件非常有用。

非常欢迎任何其他实施方案。感谢

3 个答案:

答案 0 :(得分:3)

在请求之间保持文件打开不是一个好主意 - 您不必“重新开始” - 只需保持一个偏移量并使用fseek()跳转到该偏移量。这样,你也可以实现“向后跳跃”。

答案 1 :(得分:1)

将您的大文件剪切成较小的文件一次,然后将小文件提供给用户。

答案 2 :(得分:0)

你应该考虑分页。如果您担心用户因需要经常点击“下一个”而感到沮丧,那么您可以使每个块相当大(因此普通读者每隔20分钟就会页面化)。

另一个选项是Chunked-Endoding传输类型:Wikipedia Entry。这将允许您的服务器快速响应,并在用户通过网络流式传输文件的其余部分时为用户提供读取内容(而不是服务器需要读取文件并一次性发送)。与正常提供文件相比,这可以显着提高感知性能,但仍会为您的服务器消耗大量带宽。

您可以使用Javascript和AJAX模拟大型文档,但只能一次发送一些文件以获得更好的性能。

考虑发送几页文档,并将监听器附加到浏览器的滚动事件中。随着时间的推移或当用户向下滚动AJAX更多的块时。这会产生一些恼人的UX边缘情况,例如:

  • 滚动条表示文件比实际文件小得多
    • 您可以通过在文档底部填写许多分页符来避免这种情况,但要使长度完美是很难的。
  • 滚动浏览当前可用内容的点将显示空白页面。
    • 您可以使用JavaScript检测到这一点并显示“加载”图标,让用户知道发生了什么。
  • 内置“查找”功能不起作用
    • 如果没有用户下载整个文档,很难避免这种情况,但您可以提供自己的搜索功能,以供他们使用(不是很好,但也许足够)。

实际上,你可能最喜欢中等页面的分页。这是一个非常好理解的设计模式,相对容易(至少与其他选项相比)来实现和快速实现。

希望有所帮助!