2

我一直在尝试将图像保存在 GAE 数据存储中,但出现以下错误:

“Blob() 参数应该是 str 实例,而不是 unicode”。

任何想法如何克服这个问题?

我读取和(尝试)写入图像的方式是:

...
avatar_data = self.request.get('pic_input') # pic_input is the name of the form
artist.picture = db.Blob(avatar_data) # artist is an entity type that has a picture field of type db.Blob()
...

我还尝试将 avatar_data 包装在 str() 中,它实际上将字符串保存在数据存储中,但我的文件没有显示!

先感谢您 !

4

2 回答 2

5

你想做什么?

来自的响应pic_input是一个 unicode 字符串,但您试图将其存储为就好像它只是二进制位一样。这些是二进制位还是字符串?

如果它们是二进制位,那么它们首先不应该被编码为 un​​icode。

如果它是一个字符串,那么你不应该将它存储在 a 中,Blob而是 a Textor String

表单上传发送编码字符串(unicode)的原因是,您没有在表单中使用正确的 enctype。

<form method = "post" enctype="multipart/form-data" >

应该解决这个问题,您的代码就可以正常工作。

于 2012-05-17T19:39:43.703 回答
3

编码吧!

avatar_data.encode('utf-8')

将 utf-8 替换为您想要的编码,例如'ascii'.

于 2012-05-17T19:32:36.760 回答