2011-04-15 67 views
1

我從遷移到IIS GAE一個網站,我試圖batch upload a lot of images聰明的辦法。除了那個特殊的挑戰之外,我還有一個更關心我的問題。所有站點(存儲在一個DB)的內容的參考圖像這樣:引用斑點在GAE

http://myurl.com/images/some-folder/maybe-another-folder/image-name.jpg

我創建Python中一個簡單的處理程序,以提供圖片:

class ServeBlobs(blobstore_handlers.BlobstoreDownloadHandler):  
    def get(self, resource):   
     query = "where filename='%s'" % resource   
     blobs = blobstore.BlobInfo.gql(query).fetch(1)   
     self.send_blob(blob_infos[0]) 

和「路線'如下

('/images/(.*)', ServeBlobs) 

這很好,不需要單獨的查找表。但是,我很確定hte Blob的文件名屬性不能包含'/',那麼我在上面的例子中如何處理文件夾(其中有很多)稱爲some-folder或者maybe-another-folder?

此外,幾乎可以肯定是在圖像名稱不同的文件夾,例如重疊

"/images/foldera/main.jpg" 
and 
"/images/folderb/main.jpg" 

任何想法?

回答

2

你應該有上傳表單指定文件作爲附加字段中輸入完整的路徑,或者完全忽略了上傳文件名,或將其追加到所提供的路徑。

然後,您應該創建一個數據存儲模型,該模型的引用blob的BlobReferenceProperty的完整路徑作爲密鑰名稱。這樣,您可以通過簡單的數據存儲獲取blob而不是更昂貴的查詢,並且還可以存儲與實體有關的任何相關信息(如標題信息等)。

1

不是一個直接的答案,但更多的建議:

如果在你的應用程序中的所有可能,我會建議您嘗試遷移所有的動態畫面使用Blob存儲區的get_serving_url方法。而不是有一個處理程序來手動提供你的斑點。這是一個更有效的服務圖像系統,併爲您提供訪問內置調整大小的未來靈活性。

這將需要遷移要稍微複雜一些,但我相信從長遠來看,要好得多。

  • 您將需要每個圖像的POST到Blob存儲區,你現在做的和檢索serving url的圖像斑點
  • 讓您舊的URL的本地地圖 =>新服務在遷移過程中-urls
  • 更新所有舊的URL您的應用程序中的新服務的URL /數據

取決於你如何存儲你所有的圖片鏈接在以前版本的您的應用程序,這可能是微不足道的或者幾乎是不可能的,但我認爲這是值得牢記。