我正在构建一个应用程序引擎端点 api,它从用户(android 应用程序)获取图片并以编程方式将其保存到 blobstore。然后我将 blob_key 保存在我的数据存储中。代码如下:
首先,我通过 my
@endpoint.method
as收到图像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 应用)
我的做法是因为我想保护我的用户的隐私。关于如何做好这件事的任何想法?我的代码片段通常来自谷歌开发者教程。
编辑:
我看不到如何将 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
?