Google App Engine Python错误:“Blob()参数应该是str实例,而不是unicode”

时间:2012-05-17 19:06:21

标签: python image google-app-engine

我一直在尝试在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()中,实际上将字符串保存在数据存储中但我的文件没有显示!!!

提前谢谢!

2 个答案:

答案 0 :(得分:5)

你想做什么?

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

如果它们是二进制位,则它们不应该首先编码为unicode。

如果是字符串,则不应将其存储在Blob中,而应存储在TextString中。

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

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

应该解决这个问题,你的代码才能正常工作。

答案 1 :(得分:3)

编码!

avatar_data.encode('utf-8')

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