哪些数据“结构”确实fs.get_last_version回报?(What data 'st

2019-09-29 15:38发布

当我使用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的外壳可以看到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}]

Answer 1:

除非有更好的答案,这是我想出。

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);


文章来源: What data 'structure' does fs.get_last_version return?