Получение и отображение изображения из Base64 из Google Admin SDK

Я использую Google Admin SDK в NodeJS, чтобы получить список пользователей. Кажется, я не могу использовать миниатюру публично, поэтому я беру их идентификатор использования и вызываю users.photos.get (NodeJS SDK), а взамен получаю веб-безопасные данные фотографий Base64 и MIME-тип.

Я пытаюсь понять, как, черт возьми, заставить мое изображение отображаться. Я перехожу к тегу img и устанавливаю атрибут SRC через JQuery на этот встроенный CSS, сделанный из формата:

'data:' + photo.mimeType + '; base64,' + photo.photoData

Получается так: data: image / gif; base64, longAssString.

Проблема в том, что изображения всегда битые. Я не могу понять, делаю ли я что-то не так, или каким-то образом Google дает мне некорректные данные, или мне нужно выполнить какое-то дополнительное REGEXing для строки, потому что она находится в каком-то «веб-безопасном» формате?

Возможно, мои изображения повреждены, но они оба отлично отображаются в панели администратора Google при администрировании пользователей (они тестовые пользователи). Я пробовал поиграть с Google Closure Library для ее функции декодирования, но она буквально декодирует ее в странные символы.

В конечном итоге я просто хочу получить фотографию пользователя из каталога администратора Google, чтобы я мог импортировать ее в другую систему!


person Ivan    schedule 13.12.2016    source источник


Ответы (1)


При загрузке фотографии (я часто это делаю) выполняется дополнительная кодировка, безопасная для веб (в дополнение к base64Encode). Эта кодировка (при загрузке) предназначена для преобразования прямой косой черты / в знак подчеркивания _ и знака плюса + в знак минус -. В коде это:

encodedPhoto = encodedPhoto.replace(/\//g,'_').replace(/\+/g,'-'); 

Это означает, что при загрузке вы должны сделать обратное:

encodedPhoto = photo.photoData.replace(/_/g,'/').replace(/-/g,'+'); 

Это частично задокументировано здесь, но я помните, что вы не должны заменять биты заполнения в соответствии с здесь .

person Peter H    schedule 13.12.2016
comment
Ты мой герой! В документации не было ясно, было ли это то, что Интернет понимал и знал, как конвертировать обратно, или мне пришлось делать это самому. Даже их библиотека Closure, похоже, не помогла и не сделала то, что нужно было сделать. - person Ivan; 14.12.2016