GridFS nutně nepotřebujete pro ukládání souborů v MongoDB, ale určitě to z něj dělá hezčí zážitek, protože zvládne rozdělování a ukládání binárních dat a zároveň zpřístupňuje metadata. Poté můžete uložit ID do svého User
dokument k obrázku avatara.
Kromě toho byste také mohli ukládat binární data přímo ve svých dokumentech, ačkoli ve svém kódu data neukládáte. Jednoduše jej otevřete pomocí PIL.Image
, ale pak s tím nic neuděláte.
Za předpokladu, že používáte pymongo
pro váš ovladač si myslím, že můžete jednoduše zabalit binární data do Binary
nádobu a poté ji uložte. Toto není mnou testováno, ale předpokládám, že by to mělo fungovat:
from pymongo.binary import Binary
binary_avatar = Binary(avat)
user={
...
"avatar":avatar,
"avatar_file": binary_avatar
...
}
Když už bylo řečeno... jednoduše si to ulehčete a použijte GridFS. K tomu je určeno.
Pokud byste použili GridFS, mohlo by to vypadat takto:
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
...
}