fs.get_last_version返回什么数据'结构'?

时间:2014-01-19 04:18:08

标签: python-2.7 pymongo bottle gridfs

当我使用get_last_version从数据库中获取图像时,实际返回的是什么,即数组,组成文件(作为字符串)的所有块的合并二进制数据,还是其他什么?

dbname = 'grid_files'
db = connection[dbname]
fs = gridfs.GridFS(db)
filename = "my_image.jpg"
my_image_file = fs.get_last_version(filename=filename)

我想要base64编码my_image_file

import base64

encoded_img_file = base64.b64encode(my_image_file)
return encoded_img_file

但我收到500错误。

在使用文档中的get_last_version时,我无法收集实际返回的内容:

http://api.mongodb.org/python/current/api/gridfs/#gridfs.GridFS.get_last_version

更多研究

我遵循了这篇文章中的逻辑:

http://blog.pythonisito.com/2012/05/gridfs-mongodb-filesystem.html

在服务器上运行Python的shell中可以看到Binary()被返回 - 所以我应该能够如上所示对其进行base64编码吗?:

>>> import pymongo
>>> import gridfs
>>> import os
>>> hostname = os.environ['OPENSHIFT_MONGODB_DB_URL']
>>> conn = pymongo.MongoClient(host=hostname)
>>> db = conn.grid_files
>>> fs = gridfs.GridFS(db)
>>> list(db.fs.chunks.find())

[{u'files_id': ObjectId('52db4d9e70914413718f2ec4'), u'_id': ObjectId('52db4d9e7
0914413718f2ec5'), u'data': Binary('lots of binary code', 0), u'n': 0}]

1 个答案:

答案 0 :(得分:0)

除非有更好的答案,否则这就是我想出来的。

get_last_version会返回Binary()个对象。

关于base64对它的编码,并返回它,我就是这样做的:

dbname = 'grid_files'
db = connection[dbname]
fs = gridfs.GridFS(db)
filename = "my_image.jpg"
my_image_file = fs.get_last_version(filename=filename)
encoded_img_file = base64.b64encode(my_image_file.read())
return encoded_img_file

然后在前端用:

访问它
$("#my_img").attr("src", "data:image/png;base64," + data);