2015-02-06 3 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(); 

если я вызвать этот метод, то он вернет STH, но для этого <img src="xxxx">, я не могу получить src с возвращенного sth, так что любые другие решения?

Я знаю, что изображение, хранящееся в riak, является двоичным байтом, но я смущен тем, как я могу получить его из riak и отобразить его на странице HTML.

Я знаю, что <img src="xxxx" />, но если изображение, хранящееся в Riak, могу ли я создать URL-адрес изображения?

+0

при попытке '', что вы получаете? Если вы попробуете этот URL с 'curl -v', заголовок содержимого будет иметь правильное значение? – Joe

ответ

1

Если я правильно понимаю вашу проблему, вы храните данные изображения в виде BLOB в Riak и извлекаете их. При этом хранится BLOB, если вы попытаетесь их извлечения и сделать что-то подобное в вашем HTML:

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

, то он не обязан работать. Идеальный способ - сохранить этот BLOB в виде файла (возможно, временного файла в/tmp) с соответствующим расширением, а затем использовать тот же путь в вашем HTML.

В качестве дополнительной точки, если BLOB вашего изображения находится в формате, который поддерживается новыми браузерами под HTML5, то вы могли бы также передать данные напрямую, используя следующий формат:

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

Подробнее об этом здесь : Embedding Base64 Images

Хотя, остерегайтесь того, что вышеуказанный способ может варьироваться в разных браузерах.

Смежные вопросы