1

Googleマップのスナップショット(Androidから)をデータストアに保存しようとしていますが、いくつかの問題が発生しています:AndroidアプリからDatastore/Google Cloud Storageに画像を保存する最適な方法は何ですか?

スナップショットは文字列化されたバイト配列に変換されますが、代理人。

StringUtils.newStringUtf8(byteAray)new String(byteArray, Charset.forName("ISO-8859-15"))に変更して解決します。

「エラー413:リクエストが長すぎます」のため、エンティティが保存されません。詳細については、ここで私はバイト配列を取得する方法

です:

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.JPEG, 50, stream); 
    byte [] bytes = stream.toByteArray(); 

だから、どのように私は、データストア(または他の溶液)を効率的にビットマップが私のAndroidの他の場所でそれを取り戻すことができるようにすることを保存することができますアプリ?

答えて

1

大きなバイナリオブジェクトの場合は、を理想的にはGoogle Cloud Storageで使用する必要があります。

イメージファイルが常に1MB未満になることが確実なら、Blob entity property typeを使用できます。

1

エラー、あなたが取得している:

エラー413:要求はあなたがクライアントでのスナップショットを小さくすることによって解決することができ

長すぎるし。現代の携帯電話のほとんどのスナップショットは1MB以上になるだろうと確信しているので、データストアは1MB未満のBase64でエンコードされた文字列しか取れないので、間違いなくこのエラーが発生します。

イメージをエンコードしてデータストアに送信する前に縮小することをおすすめします。

あなたが元のサイズを維持したい場合は、あなたの他のオプションはGoogle Cloud Storageを使用することで、あなたはsigned URLを作成し、それ

にあなたのイメージをアップロードすることができ、特に、あなたのケースのために、署名されたアップロードのURL
関連する問題