2015-02-06 38 views
2

在我現在的項目中,我需要將一些圖像存儲到Riak,然後從Riak獲取它們並將它們顯示在HTML頁面中。如何將圖像存儲爲riak並從riak中獲取圖像?

這裏是一個API封裝我:

//inputstream is a stream of an image 
byte[] imageContent = IOUtils.toByteArray(inputStream); 
String descriptiveId = null; 
String storedImageId = UUID.randomUUID().toString(); 
BlobContent blobContent = new BlobContent(imageContent,descriptiveId); 
riakBlobDAO.create(storedImageId,blobContent); 

.....

//get the byte[] from riak by the uuid 
    BlobContent returnedBlobContent = riakBlobDAO.get(storedImageId); 
    byte[] returnedImageContent = returnedBlobContent.getData(); 

如果我調用此方法,它將返回某事,但對於這個<img src="xxxx">,我不能 從返回的東西獲取src,所以有其他解決方案?

我知道存儲在riak中的圖像是二進制字節,但我很困惑,我該如何從riak中獲取它並將其顯示在HTML頁面中。

我知道<img src="xxxx" />,但如果存儲在Riak中的圖像,我可以生成圖像url嗎?

+0

當你嘗試''時,你會得到什麼?如果你用'curl -v'試試這個URL,content-type頭部是否有正確的值? – Joe 2015-02-06 15:42:20

回答

1

如果我正確理解您的問題,您將圖像的數據存儲爲Riak中的BLOB並檢索相同的數據。有了這個存儲BLOB,如果你試圖獲取它,做這樣的事情在你的HTML:

<img src="*<...retrieved BLOB data...>*" /img> 

那麼它不會綁定到工作。理想的方法是將此BLOB作爲一個文件(可能是/ tmp中的臨時文件)以適當的擴展名保存,然後在您的HTML中使用相同的路徑。

作爲一個額外的點,如果你的形象的BLOB是在由HTML5在新的瀏覽器支持的格式,那麼你也可以通過將數據直接採用以下格式:

<img src="data:image/png;base64, ....." /> 

更多信息在這裏:Embedding Base64 Images

雖然,上面的方式在不同的瀏覽器上會受到不同行爲的影響。

相關問題