2011-12-14 63 views
2

我想讓我的用戶上傳HTML內容到我的AppEngine網絡應用程序。但是,如果我使用Blobstore上傳所有文件(HTML文件,css文件,圖像等),則會導致問題,因爲到其他文件(頁面,資源)的所有鏈接都不起作用。如何處理將HTML內容上傳到AppEngine應用程序?

我看到兩種可能性,但他們兩人都不是很漂亮,我想避免使用它們:

  • 去了在HTML文件中的所有鏈接,並改變他們的相關blob鍵。

  • 保存文件和Blob鍵之間的映射,捕獲所有重定向並提供blob(可能導致同名文件出現問題)。

我該如何優雅地解決這個問題,而不必去查看並更改我的用戶文件?

+1

我不認爲有更優雅的解決方案。由於html需要包含它的資源(css/image等)的正確路徑。你能解釋更多的用戶案例嗎?想要一個用戶能夠做到嗎?在我的頭上,我會圍繞它製作一個html框架,並讓用戶在sperate textarea中指定css/js並將其作爲文本存儲在數據存儲中。並利用圖像blobstore。 – fredrik 2011-12-14 09:57:34

回答

0

保存映射是最好的選擇。您需要以某種方式標識一組文件,因爲多個用戶可以上傳具有相同名稱的文件,然後將唯一路徑名與該組中的每個文件相關聯。您可以使用鍵名稱使其成爲一個簡單的數據存儲庫,以查找與給定路徑關聯的Blob。不需要重定向 - 只需使用標準的Blobstore服務方法設置blobstore標頭即可讓App Engine爲用戶提供blob服務。

另一種選擇是上傳一個zip文件,正如弗雷德裏克所建議的那樣。不需要單獨解壓和存儲文件 - 您可以直接在blobstore中從壓縮文件中提供它們,因爲this demo app可以。

1

由於應用引擎正在多臺服務器上運行您的內容,因此無法寫入文件系統。你可以做的是要求他們上傳一個包含他們的html,css,js,圖像的zip文件...... python的zipfile模塊在appengine中可用,因此你可以解壓這些文件並單獨存儲它們。這樣,你就知道zip的目錄結構。這允許您創建到blobstore中內容的相對路徑的映射。我沒有足夠的zipfile經驗來寫一個完整的例子,我希望有經驗的人可以編輯我的答案,或者用一個例子來創建一個新的答案。

相關問題