我有这个类代表我的模型:
from google.appengine.ext import db
class PuzzleSets(db.Model):
img = db.BlobProperty(required=True)
...
我想要检索那个blobproperty。但是,我想检索bytes数组并将其输出到字符串。防爆。 :“AE214FAA21617772”,用于存储在我的blob中的8字节图像。
我尝试使用blob_reader和其他一些方法,但我总是得到像
这样的错误UnicodeDecodeError:'utf8'编解码器无法解码位置0的字节0x89:无效的起始字节
或
hex()参数不能转换为十六进制
等
任何人都可以帮我找到正确的方法吗? 谢谢!
答案 0 :(得分:1)
Blobreader用于从BlobStore读取。 要使用BlobProperty /获取字符串,请使用:
data = db.Blob(puzzleset_instance.img)
如果您的blob包含文本,请使用:
unicode_data = db.Blob(instance.blob_property).decode('utf-8')
答案 1 :(得分:0)
我终于通过这个流畅的代码获得了我想要的东西:
self.response.out.write(''.join([hex(z)[2:].zfill(2) for z in bytearray(puzzleset_instance.img)]))
答案 2 :(得分:0)
您可以使用foo.encode('hex')
以十六进制编码str实例。