使用mongoengine从GridFS获取数据

时间:2014-07-12 14:18:20

标签: python django mongodb mongoengine gridfs

亲爱的同事们。
在我的项目中,我使用mongoengine成功地在mongodb中保存了数据(图像)。我有从mongodb获取图像并在客户端上显示它的问题。我没有使用本地存储,因此这会导致加载页面时出现问题(在 photo_view 功能加载文件并存储到临时文件之前,页面不会显示。

这是我在mongodb中保存对象的捷径

{
    "_id" : ObjectId("53c123edcb596046fdf6c746"),
    "main_photo" : ObjectId("53c123e1cb596046fdf6c6fc"),
    "create_date" : ISODate("2014-07-12T12:02:41.036Z")
}

使用GridFS将实际文件保存在 db.fs.files 中。

这是models.py文件

class Photo(Document):
    def __unicode__(self):
        return self.create_date
    main_photo = FileField()
    create_date = DateTimeField(default=datetime.datetime.now)

问题出在 photo_view 功能

@login_required
def photo_view(request, id, template_name):
    params = {}
    obj = Photo.objects.get(id = id)
    print obj.main_photo.read()
    params['object'] = obj
    return render(request, template_name, params)

obj.main_photo.read()是一个实际文件。如何在不在我的服务器上的临时文件中存储数据的情况下加载页面。即使我将加载数据,函数 photo_view 也不会完成,直到从 GridFS 加载/复制它。

0 个答案:

没有答案