gpt4 book ai didi

python - 使用 ndb.blobproperty 引发的值错误

转载 作者:行者123 更新时间:2023-11-28 22:45:26 26 4
gpt4 key购买 nike

所以我正在关注 Google App Engine 的 Python 图像教程,但我收到了错误:“raise ValueError('Name %r cannot contain period characters' % (name,))”

我正在尝试将图像保存为模型的一部分。我认为这与我保存上传图像的方式有关。我在我的模型类中使用了 ndb.BlobProperty() 。这是代码。

class Greeting(ndb.Model):
"""A main model for representing an individual Guestbook entry."""
author = ndb.StructuredProperty(Author)
content = ndb.StringProperty(indexed=False)
avatar = ndb.BlobProperty()
date = ndb.DateTimeProperty(auto_now_add=True)

然后我尝试通过制作模型并使用.put()添加来将模型放入数据库。我不确定语法是否适合设置属性。这是我在 post(self) 方法中的处理程序类中的内容。

greeting = Greeting(parent=guestbook_key(guestbook_name))
greeting.content = self.request.get('content')
avatar = images.resize(self.request.get('img'), 32, 32)
greeting.avatar = ndb.BlobProperty(avatar)
greeting.put()

抱歉,这是堆栈跟踪 enter image description here

最佳答案

在我看来,您没有正确检索图像数据,而不是:

avatar = images.resize(self.request.get('img'), 32, 32)

试试这个:

avatar = images.resize(self.request.POST['img'].value, 32, 32)

这是 because :

Uploaded files are available as cgi.FieldStorage (see the cgi module) instances directly in request.POST.

所以这样,你也可以得到这样的文件名:

self.request.POST['img'].filename 

更新:

作为@Greg提到,使用 BlobProperty 是您的直接问题,因此您需要更改所有这些:

avatar = images.resize(self.request.get('img'), 32, 32)
greeting.avatar = ndb.BlobProperty(avatar)

为此:

greeting.avatar = images.resize(self.request.POST['img'].value, 32, 32)

关于python - 使用 ndb.blobproperty 引发的值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28621346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com