2011-09-08 42 views
0

對於從Blob存儲檢索圖像,我通常會做以下,它的工作原理如果我在文件夾中有圖像,上面的圖片庫工作。的fancybox圖片廊+ Blob存儲

所以,我的問題是如果我想從Blobstore而不是文件夾檢索圖像?

所以,我嘗試以下不工作:

$("a[rel=photo_collections]").fancybox({ 
'transitionIn'  : 'none', 
'transitionOut'  : 'none', 
}); 

<a rel="photo_collections" href="/image/photo.png"> Photos </a> 
<a rel="photo_collections" href="/image/photo2.png"> Photos </a> 

// This part, the fancybox works but it doesn't display the image correctly. All it shows were some sort of binary data instead of image 
<a rel="photo_collections" href="/image?blob_key={{ blob_key }}"    

因此,我在這裏兩個主要問題:

  1. 如何解決上述問題?
  2. 如果我希望做一些類似Google Plus/Facebook照片查看器的功能,在查看圖像時,用戶可以發表評論。這是否需要HTML內容庫而不是圖片庫,因爲我需要更多HTML表單控件?

編輯

以下是爲來自Blob存儲檢索到的圖像處理程序:

class RemoteDisplayImageHandler(blobstore_handlers.BlobstoreDownloadHandler): 
    def get(self): 

    blob_key = self.request.GET.get('blob_key', None) 
    blob_info = blobstore.BlobInfo.get(blob_key) 

    logging.debug('blob_key=%s', blob_key) 
    logging.debug('blob_info=%s', blob_info) 

    if not blob_info: 
     raise Exception('Blob Key does not exist') 

    self.send_blob(blob_info) 
+0

你這個網址後得到了什麼?你的圖像的二進制內容?什麼MIME類型? –

+0

是啊...那些喜歡用「?4567898CDEFGHcdefghhi ......」 – MrCooL

+0

那麼,問題是它有無效的內容類型? –

回答

0

解決通過使用替代:

  options.push({ 
        'href' : 'image_url', 
        'class' : 'iframe' 
       }); 

      $.fancybox(options, { 
       'padding'   : 0, 
       'transitionIn'  : 'none', 
       'transitionOut'  : 'none', 
       'type'    : 'image', 
       'changeFade'  : 0 
      }); 
1

這聽起來像你的圖像處理程序返回錯誤的內容類型。確保您在響應中正確設置了Content-Type標題。

+0

我應該設置什麼內容類型?我編輯了我的問題以包含處理程序類。正如我所解釋的,當我使用元素來請求圖像時,它工作正常。所以,如果我使用元素,我該怎麼做才能使它工作? – MrCooL

+0

@MrCooL'image/png'如果它是一個PNG,'image/jpeg'如果它是一個JPEG等等。如果你使用標準的blobstore上傳處理程序上傳文件,這應該已經設置 - 你可以用wget或你的確認瀏覽器的開發工具。 –

+0

您的意思是這樣的嗎?是的,我用標準的blobstore上傳處理程序的方式來存儲它..我存儲了數據存儲區中的blobstore密鑰.. – MrCooL