我有一个用 Python 编写的关于 GAE 的页面(1)将 jpg 上传到 blobstore。那部分有效。我现在需要进行 (2) 我手气不错的图像转换,然后 (3) 将其作为另一个 blob 存储在 blobstore 中。理想情况下,我想在同一个上传处理程序中执行 (1)、(2) 和 (3)。
我已经按照这里的代码进行了操作,但它只执行 (1) 和 (2)。 https://developers.google.com/appengine/docs/python/images/#Python_Transforming_images_from_the_Blobstore
我浏览了 SO,我能找到的最接近的是: Storing Filtered images on the blobstore in GAE
它将转换保存到文件(使用 Files API),然后将文件上传到 blobstore。但是,它使用 Files api,并且根据以下内容,不推荐使用 Files API。 https://developers.google.com/appengine/docs/python/blobstore/#Python_Writing_files_to_the_Blobstore
在我的模型中,我有一个 BlobKeyProperty,它将对图像的引用存储在 blobstore 中
class ImageModel(ndb.Model):
imagetoserve = ndb.BlobKeyProperty(indexed=False)
这是到目前为止的上传处理程序代码:
from google.appengine.ext import blobstore
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.api.images import get_serving_url
from google.appengine.api import images
upload_files = self.get_uploads('imgfile') # 'file' is file upload field in the form
blob_info = upload_files[0]
imgtmp = images.Image(blob_info)
imgtmp.im_feeling_lucky()
img = ImageModel()
img.imagetoserve = imgtmp
img.put()
我的问题在这一行:
img.imagetoserve = imgtmp
该模型是一个 blobkey 属性,但我给它提供了一个图像,显然会导致类型不匹配的错误。如何执行将转换后的 imgtmp 上传到 blobstore、捕获 blobkey 并保存对我的模型的引用的步骤?