2016-12-13 7 views
0

NodeJSのGoogle Admin SDKを使用してユーザーのリストを取得しています。そこにサムネイルを公開しているようには見えないので、使用IDを取得してusers.photos.get(NodeJS SDK)を呼び出しています。その代わりにウェブベースのBase64写真データとMIMEタイプを取得します。Google Admin SDKのBase64から画像を取得して表示する

私はイメージを実際に表示する方法を理解しようとしています。私はimgタグに行くとフォーマットで作られたこのインラインCSSにはJQueryを経由してSRC属性を設定しています:

のデータ: '+ photo.mimeType + '; base64で、' + photo.photoData

これは次のようになります。data:image/gif; base64、longAssString

問題は画像が常に壊れていることです。私は何か間違っているかどうか、あるいは何とかGoogleが私に悪いデータを与えているのか、文字列に何らかの余分なREGEXingをする必要があるかどうかは分かりません。

私の画像は壊れているかもしれませんが、ユーザー管理者(テストユーザー)のGoogle管理ダッシュボードには両方とも正常に表示されます。私はデコード機能のためにGoogle Closure Libraryで試してみましたが、文字通りそれを奇妙な文字にデコードします。

最終的に私は自分の写真をGoogle管理ディレクトリから取得して、別のシステムにインポートすることができます。

答えて

2

写真をアップロードするとき(私はこれを多く行います)、(base64Encodeに加えて)いくつかのWeb安全なエンコードが追加されています。そのエンコード(アップロード時)は、スラッシュ/をアンダースコア_に変換し、プラス記号+をマイナス記号-に変換することです。コードでは、それはです:

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

ダウンロードするとき、あなたは逆の操作を行う必要があることを意味する:

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

これは一部hereに記載されていますが、私はあなたのようにパディングビットを置き換えるべきではないことを覚えておいてくださいコメントhereごとに。

+0

あなたは私のヒーローです!それは、ウェブが理解していたかどうか、また元に戻す方法を知っていたかどうか、または私が自分でそれをやらなければならないかどうかは、ドキュメントではっきりしていませんでした。 Closureの図書館でさえ、本当に助けてやる必要があるようには見えませんでした。 – Ivan

関連する問題