从Google Admin SDK中检索并显示Base64中的图像

时间:2016-12-13 16:37:55

标签: javascript base64 google-admin-sdk

我正在使用NodeJS中的Google Admin SDK获取用户列表。我似乎无法以公共方式使用缩略图,所以我正在使用他们的ID并调用users.photos.get(NodeJS SDK),作为回报,我获得了Web安全的Base64照片数据和mime类型。< / p>

我正在试图弄清楚如何让我的图像真正显示出来。我将转到img标签并通过JQuery将SRC属性设置为由以下格式组成的内联CSS:

  

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

所以这就像:数据:image / gif; base64,longAssString

问题是图像总是坏掉。我无法弄清楚我是否做错了什么,或者谷歌是否给了我一些不好的数据,或者我需要对字符串做一些额外的REGEXing,因为它采用的是“网络安全”格式?

也许我的图片已损坏,但在管理用户(他们是测试用户)时,它们在Google管理员信息中心中都能正常显示。我尝试使用Google Closure Library来解码它的解码功能,但它确实将它解码为奇怪的字符。

最终,我只想从Google管理员目录中获取用户的照片,以便将其导入另一个系统!

1 个答案:

答案 0 :(得分:4)

上传照片时(我经常这么做),还有一些额外的网络安全编码(除了base64Encode之外)。该编码(在上传时)是将正斜杠/转换为下划线_,将加号+转换为减号-。在代码中,那是:

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

这意味着在下载时,您应该反过来:

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

部分here中记录了这一点,但我记得您不应该根据评论here替换填充位。