ユーザー(Androidアプリ)から写真を取得し、プログラムでblobstoreに保存するアプリエンジンエンドポイントAPIを構築しています。次に、blob_keyをデータストアに保存します。コードは次のようになります。
最初に私は私を通して画像を受け取りまし
@endpoint.method
たmessages.BytesField
:image_data = messages.BytesField(1、required = True)
次に、次のようにblobstoreに保存します。
from google.appengine.api import files
def save_image(data):
# Create the file
file_name = files.blobstore.create(mime_type='image/png')
# Open the file and write to it
with files.open(file_name, 'a') as f:
f.write('data')
# Finalize the file. Do this before attempting to read it.
files.finalize(file_name)
# Get the file's blob key
blob_key = files.blobstore.get_blob_key(file_name)
return blob_key # which is then saved to datastore
今、私は画像を提供したいと思います。次のコードをエンドポイントAPIに適合させる方法がわかりません。
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info)
結局、私はこのようなサービング手順を想像します:
@ endpoints.method:
データストアからblob_keyを取得します
blob_keyで画像を取得する
StuffResponseMessageに画像を追加します
StuffResponseMessageをフロントエンド(Androidアプリ)に送信します
私のアプローチは、ユーザーのプライバシーを保護したいからです。これをうまく行う方法について何か考えはありますか?私のコードスニペットは通常、Google開発者チュートリアルからのものです。
編集:
画像を取得するためにデータストアから次のメソッドにblob_keyを渡す方法がわかりません。
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info)
resource
とにかく、中身は?