What data 'structure' does fs.get_last_version return?

一笑奈何 提交于 2019-12-11 05:08:05

问题


When I use get_last_version to get an image from the database, what is actually returned ie an array, the merged binary data of all the chunks that make up the file (as a string), or something else?

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

I'm wanting to base64 encode my_image_file with:

import base64

encoded_img_file = base64.b64encode(my_image_file)
return encoded_img_file

But I'm getting a 500 error.

I haven't been able to glean what is actually returned when using get_last_version from the docs:

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

More Research:

I followed the logic from this post:

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

And in shell running Python on server could see that Binary() was returned - so should I be able to base64 encode this as demonstrated above?:

>>> 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:


Unless there is a better answer, this is what I've come up with.

get_last_version returns a Binary() object.

In regards to base64 encoding it, and returning it, this is how I did it:

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

Then accessed it on the front end with:

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


来源:https://stackoverflow.com/questions/21213142/what-data-structure-does-fs-get-last-version-return

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!