我一直在尝试在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()中,实际上将字符串保存在数据存储中但我的文件没有显示!!!
提前谢谢!
答案 0 :(得分:5)
你想做什么?
来自pic_input
的响应是一个unicode字符串,但是您试图将其存储为就像二进制位一样。这些二进制位还是字符串?
如果它们是二进制位,则它们不应该首先编码为unicode。
如果是字符串,则不应将其存储在Blob
中,而应存储在Text
或String
中。
表单上传发送编码字符串(unicode)的原因是,您没有在表单中使用正确的enctype。
<form method = "post" enctype="multipart/form-data" >
应该解决这个问题,你的代码才能正常工作。
答案 1 :(得分:3)
编码!
avatar_data.encode('utf-8')
将utf-8替换为您想要的编码,例如'ascii'
。