在我的项目中,现在,我需要存储一些图像到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">,我不能从返回的东西中获得src,那么还有其他的解决方案吗?
我知道存储在riak中的图像是二进制字节,但我很困惑如何从riak获取它并将其显示在HTML页面中。
发布于 2015-03-10 04:01:26
如果我正确理解了您的问题,您将图像数据作为BLOB存储在Riak中并检索相同的数据。使用这个存储的BLOB,如果您尝试检索它并在HTML中执行类似以下操作:
<img src="*<...retrieved BLOB data...>*" /img>那么它就不一定会起作用。理想的方法是将这个BLOB另存为一个文件(在/tmp中可能是一个临时文件),并使用相同的路径。
作为补充,如果您的图像的BLOB是HTML5下较新的浏览器支持的格式,那么您也可以使用以下格式直接传递数据:
<img src="data:image/png;base64, ....." />更多信息请点击此处:Embedding Base64 Images
不过,请注意,上述方式在不同的浏览器上会有不同的行为。
https://stackoverflow.com/questions/28357955
复制相似问题