将图像存储在 MongoDB
Store images in MongoDB
我正在使用 PyMongo
连接到我的数据库,当用户上传图像时,我想使用 GridFS
将其存储在集合中的用户特定文档中。我是这样做的:
class uploadHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
self.render("upload.html",user=self.current_user)
def post(self):
db = pymongo.Connection('mongodb://heroku_app.mongolab.com:/heroku_app').heroku_appxxxx
user = db.userInfo.find_one({'Username':self.current_user})
file1 = self.request.files['images'][0]
original_fname = file1['filename']
print "file: " + original_fname + " is uploaded"
fs = gridfs.GridFS(user)
fs.put(file1)
#db.userInfo.update({'Username':self.current_user},{'$push':{'Images': file1}})
self.redirect('/upload')
但这给了我错误:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\tornado\web.py", line 1332, in _execute
result = method(*self.path_args, **self.path_kwargs)
File "C:\Users\rsaxs\workspace\pie\src\Server.py", line 4101, in post
fs = gridfs.GridFS(user)
File "C:\Python27\lib\site-packages\gridfs\__init__.py", line 53, in __init__
raise TypeError("database must be an instance of Database")
TypeError: database must be an instance of Database
如何才能最好地将图像存储在集合中特定文档的 mongoDB 中?
您需要将数据库对象传入GridFS构造函数。
fs = gridfs.GridFS(db)
使用 GridFS,您可以保存和读取超过 BSON 文档文件大小限制 (16 MB) 的文件。它通常用于存储媒体,因为您可以将数据流式传输到客户端。
GridFS 有一个特定的文档结构 -- 它实际上由多个文档组成,当您向 GridFS 插入内容时,只需在您的 db
中检查它。由于它具有特殊的结构并且 files
可能会超过 16MB 的文档大小限制,因此您不能在其他文档中包含 GridFS 文档。
如果你想引用一些 GridFS 对象,你可以通过保存特定 GridFS 文件的 file_id
并在你需要检索它的内容时查询它。
我正在使用 PyMongo
连接到我的数据库,当用户上传图像时,我想使用 GridFS
将其存储在集合中的用户特定文档中。我是这样做的:
class uploadHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
self.render("upload.html",user=self.current_user)
def post(self):
db = pymongo.Connection('mongodb://heroku_app.mongolab.com:/heroku_app').heroku_appxxxx
user = db.userInfo.find_one({'Username':self.current_user})
file1 = self.request.files['images'][0]
original_fname = file1['filename']
print "file: " + original_fname + " is uploaded"
fs = gridfs.GridFS(user)
fs.put(file1)
#db.userInfo.update({'Username':self.current_user},{'$push':{'Images': file1}})
self.redirect('/upload')
但这给了我错误:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\tornado\web.py", line 1332, in _execute
result = method(*self.path_args, **self.path_kwargs)
File "C:\Users\rsaxs\workspace\pie\src\Server.py", line 4101, in post
fs = gridfs.GridFS(user)
File "C:\Python27\lib\site-packages\gridfs\__init__.py", line 53, in __init__
raise TypeError("database must be an instance of Database")
TypeError: database must be an instance of Database
如何才能最好地将图像存储在集合中特定文档的 mongoDB 中?
您需要将数据库对象传入GridFS构造函数。
fs = gridfs.GridFS(db)
使用 GridFS,您可以保存和读取超过 BSON 文档文件大小限制 (16 MB) 的文件。它通常用于存储媒体,因为您可以将数据流式传输到客户端。
GridFS 有一个特定的文档结构 -- 它实际上由多个文档组成,当您向 GridFS 插入内容时,只需在您的 db
中检查它。由于它具有特殊的结构并且 files
可能会超过 16MB 的文档大小限制,因此您不能在其他文档中包含 GridFS 文档。
如果你想引用一些 GridFS 对象,你可以通过保存特定 GridFS 文件的 file_id
并在你需要检索它的内容时查询它。