2009-08-16 101 views
0

我需要編寫一個文本文件查看器(不是目錄樹,但是實際的文件內容)以供瀏覽器使用。它將用於查看大文件。我想讓用戶能夠實際上呃,瀏覽文件,即上一頁按鈕,而每個頁面將只顯示文件的一部分。在瀏覽器中查看大文本文件

兩個問題:

  • 反正通過POST(或東西),以便通過文件描述符每一頁我可以繼續從已打開的文件讀取,而不是開始從頭再來(再次 - 巨大的文件)
  • 有沒有辦法向後讀取文件?在瀏覽文件時非常有用。

任何其他實施的想法是非常受歡迎的。謝謝

回答

2

保持文件在請求之間打開並不是一個好主意 - 您不必「重新開始」 - 只需維護一個偏移量並使用fseek()跳轉到該偏移量即可。這樣,你也可以實現「向後跳躍」。

+0

就是這樣。像魅力一樣工作:D – MeLight 2009-08-17 14:50:49

1

一次性將大文件剪切成較小的文件,然後將小文件提供給用戶。

0

你應該考慮分頁。如果您擔心用戶因需要頻繁點擊「下一個」而感到沮喪,則可以使每個塊合理地大(因此每20分鐘一個普通閱讀器頁面)。

另一種選擇是分塊編碼傳輸類型:Wikipedia Entry。這將使您的服務器能夠快速響應併爲用戶提供某些內容,同時通過網絡傳輸文件的其餘部分(而不是需要讀取文件並一次發送全部內容的服務器)。與通常提供文件相比,這可以顯着提高感知性能,但仍會爲服務器消耗大量帶寬。

您可能可以使用Javascript和AJAX模擬大型文檔,但只能一次發送多個文件以獲得更好的性能。

請考慮發送幾頁的文檔,並將偵聽器附加到瀏覽器的滾動事件中。隨着時間的推移或用戶向下滾動AJAX更多的塊。這就產生了幾個煩人UX邊緣的情況下,如:

  • 滾動條顯示更小的文件比實際上存在
    • 你也許可以通過在文檔的底部有許多填充避免這種情況分頁符,但很難使長度完美。
  • 滾動到當前可用內容點將顯示一個空白頁面。
    • 你可以使用JavaScript檢測到這一點,並顯示一個「加載」圖標,讓用戶知道發生了什麼。
  • 內置「查找」功能不起作用
    • 很難避免這種未經用戶下載整個文件,但你可以提供自己的搜索功能用起來,而不是(不作爲很好但可能足夠)。

真的不過,你可能最好關閉與中型頁面分頁。這是一個很好理解的設計模式,與其他選項相比(至少與其他選項相比)實現和實現速度更快。

希望有幫助!

+0

我實際上使用了fseek()解決方案,它很直觀且很容易實現。關於大量的分頁問題 - 我已經添加了goto-line選項,所以它很酷:)我可能讓你感到困惑,但我不需要這樣讓讀者留在我的網站上 - 讀者不想成爲在那裏首先是大聲笑。這是一種簡單的方式,向我們公司的其他海外員工展示一些大文本文件 - 所以不需要太花哨:) 感謝您的詳細解釋 – MeLight 2009-08-17 14:55:45