2013-07-29 53 views
-1

我正在將MS Word文檔轉換爲HTML,然後我將在HTML5畫布中的I幀中顯示其他交互元素。在Mongodb中存儲網頁,包括html,css,圖像等

當然,轉換後的文檔將是一個網頁,包含html,css,image等文件,所有這些文件都會對最終顯示做出貢獻。

我將這個應用程序中的所有多媒體存儲在Mongodb的GridFS中。它由servlet提供。

是否有一個很好的策略或實現,我可以用它來存儲在MongoDB中,構成網頁的所有文件?我想過在GridFS中將目錄保存在一個zip文件中,但我不想爲了提供內容而解壓縮。

+0

這是否有幫助:http://docs.mongodb.org/manual/reference/gridfs/#gridfs-files-collection – eclipsis

+0

真的沒有幫助 - 我目前使用GridFS存儲視頻,音頻和圖像文件,所以我一般瞭解如何使用它。問題是一個網頁是由很多文件組成的,所有文件都相互引用(html,css,image)。我想將它存儲在mongodb/GridFS中,最好是作爲自引用單元,並且能夠使用servlet將其提供給調用者。 – Ramesh

+0

我不理解這個問題的根源 - 這是一個人們跨越多種不同技術的問題 - 你如何創建一個網頁的數據版本,它由許多不同的文件組成,這些文件在內部互相引用。換句話說,這個數據的基於文件系統的表示的替代方案是什麼。看起來非常重要,清楚,精確。 – Ramesh

回答

2

我看到,對於這個問題的解決方案很簡單:

  1. 你需要確保在HTML/CSS/JS所有的鏈接都是相對的(你可以從絕對它們轉換爲相對的,當你保存他們在mongodb)。

  2. 您的servlet應正確處理所有請求,解析請求路徑,讀取請求的資源並將其作爲結果返回。

例如,假設您有頁面testA.html,testB.html,script.jsstyle.css。你將它們全部存儲在MongoDB中,所以你應該知道文件的名稱和內容。讓我們來看看你將需要處理:

  1. 用戶請求http://yourmongodb/testA.html頁面 - 你的servlet解析這個網址,發現它希望記錄testA.html,所以你需要找到在MongoDB中這個文件並返回它的內容。
  2. 瀏覽器解析testA.html的內容並找到script.jsstyle.css。如果您將所有內容都保存爲相對地址,那麼瀏覽器將會執行另外兩個請求:http://yourmongodb/script.jshttp://yourmongodb/style.css,它再次告訴您需要在mongodb中找到哪些內容以及需要返回的內容。
  3. 如果testA.html已鏈接到testB.html(鏈接是相對的) - 當用戶點擊鏈接時 - 瀏覽器將請求http://yourmongodb/testB.html

如果您還希望支持目錄,則可以將這些信息作爲文件集合中的附加內容。

+0

謝謝,這是一個明顯的答案,我錯過了,因爲我不使用路徑。在GridFS中Path是可選的,文件ID是獲取文件的最快方式。我通過id檢索所有文件。 但是,我可以使用路徑來訪問這些文件。第一部分激活servlet,第二部分將在Mongodb中找到該文件。正如你所說,我可以保持相對路徑一致,這在網頁和Mongo中都適用。 我需要創建一個方法來上傳mongo GridFS DAO中的一個目錄結構。這不是一個微不足道的,但它會起作用。如果沒有人提出任何更簡單的建議,我會這樣做。 謝謝 – Ramesh