Niekoniecznie potrzebujesz GridFS do przechowywania plików w MongoDB, ale z pewnością sprawia to, że jest to przyjemniejsze, ponieważ obsługuje dzielenie i zapisywanie danych binarnych, jednocześnie udostępniając metadane. Następnie możesz przechowywać identyfikator w swoim User
dokument do obrazu awatara.
Poza tym możesz również przechowywać dane binarne bezpośrednio w swoich dokumentach, chociaż w swoim kodzie nie zapisujesz danych. Po prostu otwierasz go za pomocą PIL.Image
, ale potem nic z tym nie robimy.
Zakładając, że używasz pymongo
dla twojego sterownika, myślę, że możesz po prostu zawinąć dane binarne w Binary
pojemnik, a następnie przechowuj go. To nie jest przeze mnie testowane, ale zakładam, że powinno działać:
from pymongo.binary import Binary
binary_avatar = Binary(avat)
user={
...
"avatar":avatar,
"avatar_file": binary_avatar
...
}
Skoro już to zostało powiedziane... po prostu ułatw sobie to i korzystaj z GridFS. Do tego jest przeznaczony.
Gdybyś miał użyć GridFS, mogłoby to wyglądać tak:
from gridfs import GridFS
avat_ctype = self.request.files['avatar'][0]["content_type"]
fs = GridFS(db)
avatar_id = fs.put(avat, content_type=avat_ctype, filename=nomfich)
user={
...
"avatar_name":avatar,
"avatar_id": avatar_id
...
}