在我的项目中,我需要将一些图像存储到Riak,然后从Riak获取它们并在HTML页面中显示它们。
这是我封装的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">
,我不能
从返回的sth中获取src,以及其他任何解决方案吗?
我知道存储在riak中的图像是二进制字节,但我很困惑,如何从riak获取它并将其显示在HTML页面中。
我知道<img src="xxxx" />
,但如果存储在Riak中的图像,我可以生成图像网址吗?
答案 0 :(得分:2)
如果我正确理解您的问题,您将图像的数据存储为Riak中的BLOB并检索它。使用此存储的BLOB,如果您尝试检索它并在HTML中执行类似的操作:
<img src="*<...retrieved BLOB data...>*" /img>
然后它不会起作用。理想的方法是将此BLOB保存为具有适当扩展名的文件(可能是/ tmp中的临时文件),然后在HTML中使用相同的路径。
另外一点,如果您的图像的BLOB采用HTML5下较新浏览器支持的格式,那么您也可以使用以下格式直接传递数据:
<img src="data:image/png;base64, ....." />
此处有更多信息:Embedding Base64 Images
尽管如此,请注意上述方式会受到不同浏览器的不同行为的影响。