【问题标题】:Retrieve and display image from Base64 from Google Admin SDK从 Google Admin SDK 从 Base64 检索和显示图像
【发布时间】:2017-04-28 19:29:43
【问题描述】:

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

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

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

结果如下:data:image/gif;base64, longAssString

问题是图像总是损坏。我不知道我是否做错了什么,或者谷歌是否以某种方式给了我一些错误的数据,或者我需要对字符串进行某种额外的正则表达式,因为它是某种“网络安全”格式?

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

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

【问题讨论】:

    标签: javascript base64 google-admin-sdk


    【解决方案1】:

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

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

    也就是说,下载时,你应该做相反的事情:

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

    这部分记录在 here 中,但我记得您不应该按照 cmets here 替换填充位。

    【讨论】:

    • 你是我的英雄!文档中不清楚这是网络理解并知道如何转换回来的东西,还是我必须自己做。甚至他们的 Closure 库似乎也没有真正帮助或做需要做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多