Du behøver ikke nødvendigvis GridFS til at gemme filer i MongoDB, men det gør det helt sikkert til en bedre oplevelse, fordi det håndterer opdelingen og lagringen af de binære data, samtidig med at metadataene også er tilgængelige. Du kan derefter gemme et ID i din User
dokument til avatarbilledet.
Bortset fra det, kan du også gemme binære data direkte i dine dokumenter, selvom du ikke gemmer dataene i din kode. Du åbner det simpelthen med PIL.Image
, men så ikke gør noget ved det.
Forudsat at du bruger pymongo
for din chauffør tror jeg, at det du kan gøre er bare at pakke de binære data ind i en Binary
beholder, og opbevar den derefter. Dette er ikke testet af mig, men jeg går ud fra, at det burde virke:
from pymongo.binary import Binary
binary_avatar = Binary(avat)
user={
...
"avatar":avatar,
"avatar_file": binary_avatar
...
}
Når det nu er sagt... gør det bare lettere for dig selv og brug GridFS. Det er det, det er beregnet til.
Hvis du skulle bruge GridFS, kunne det se sådan ud:
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
...
}