Скажем, http://example.com/image возвращает сгенерированные данные изображения как image/jpeg с некоторыми дополнительными данными в заголовках ответов. http://example.com/image возвращает сгенерированное изображение, отличающееся для каждого запроса. Генерация изображений несколько случайна (или, по крайней мере, независима от запроса). Ответ содержит дополнительные данные, такие как время создания (но не только).
Мне нужно сделать некоторые операции с данными из заголовков и отобразить изображение. Проблема, с которой я столкнулась, - показать изображение вместе с заголовками. Скажем, я хочу отобразить изображение и распечатать заголовки ответов чуть ниже изображения. Как я могу это сделать?
Я получаю изображение с помощью angularjs
и $http
. И тогда у меня есть
var imagedata = response.data
var someheader = response.header('some-header')
Отсюда, как мне отображать imagedata
? Все, что я нашел, это преобразовать данные в base64. Есть ли способ избежать такого преобразования?
РЕДАКТИРОВАТЬ:
Я забыл упомянуть, что я ищу что-то, что будет работать для старых браузеров, таких как ie8/9. Я знаю, что есть URL.createObjectURL
. Но это не похоже на совместимость.
Если вы включили изображение, встроенное в тег IMG, вы должны преобразовать его в base64. Причиной этого является то, что данные двоичного изображения могут содержать любое количество символов и символов, которые недействительны в HTML.
Представьте, что любые данные изображения, которые вы вставляете, станут частью HTML/DOM страницы hte, включая любые кавычки, двойные кавычки, большие/меньшие, чем знаки, в двоичных данных изображения.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: В Javascript это будет выглядеть так:
encodedImage = window.btoa(binaryimagedata);
newimg = Document.createElement('img')
newimg.src = "data:text/css;base64,"+encodedImage
document.body.appendChild