I'm using PyMongo
to connect to my database, when a user uploads an image I want to store it using GridFS
within the users specific document in the collection. I'm doing it as so:
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')
But this gives me the error:
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
How can an image be best stored in a mongoDB in a particular document within a collection then?