【发布时间】:2014-06-20 10:32:42
【问题描述】:
我正在使用 python 构建基于 Google App Engine 的 Web 应用程序;但是我似乎遇到了障碍。
目前,我的网站从外部网站获取远程图像 URL。这些 URL 被放置在一个列表中并发送回我的应用程序。我希望能够在我的数据存储中存储相应的图像(而不是 URL);为了避免每次都必须获取远程图像以及必须处理断开的链接。
我在网上找到的解决方案都涉及用户必须上传自己的图片。我尝试实现,但我不确定一旦用户点击提交按钮,上传的图像会发生什么(或它如何转换为 blob)。
据我了解,blob 是存储为单个实体的二进制数据的集合(来自维基百科)。因此,我尝试使用以下内容:
class rentalPropertyDB(ndb.Model):
streetNAME = ndb.StringProperty(required=True)
image = ndb.BlobProperty(default=None)
class MainPage(BaseHandler):
def get(self):
self.render("index.html")
def post(self):
rental = rentalPropertyDB()
for image in img_urls:
rental.image = urlfetch.Fetch(image).content
rental.put()
这个问题的答案:Image which is stored as a blob in Datastore in a html page 与我的相同,但是解决方案建议将图像上传到 blobstore 并使用:
upload_files = self.get_uploads('file')
blob_info = upload_files[0]
这让我很困惑,因为我不确定“文件”到底指的是什么。我会用每张图片的 URL 替换“文件”吗?或者我需要在替换之前对每个图像执行一些操作吗?
我已经在这个问题上卡住了至少两天了,如果能提供任何帮助,我将不胜感激。我认为这让我如此困惑的主要原因是每个解决方案中使用的各种方法。 IE。使用 Google Cloud Storage、URLFetch、Images API 以及各种类型的 ndb.Blobstore(BlobKeyProperty 与 BlobProperty)等。
谢谢。
【问题讨论】:
标签: python image google-app-engine blobstore app-engine-ndb