Du behöver inte nödvändigtvis GridFS för att lagra filer i MongoDB, men det gör det säkert till en trevligare upplevelse, eftersom det hanterar uppdelningen och sparandet av binära data, samtidigt som metadatan också är tillgänglig. Du kan sedan lagra ett ID i din User
dokument till avatarbilden.
Bortsett från det kan du också lagra binär data direkt i dina dokument, även om du inte sparar data i din kod. Du öppnar den helt enkelt med PIL.Image
, men gör sedan ingenting med det.
Förutsatt att du använder pymongo
för din förare tror jag att det du kan göra är att bara slå in binärdata i en Binary
behållaren och förvara den sedan. Detta är oprövat av mig, men jag antar att det borde fungera:
from pymongo.binary import Binary
binary_avatar = Binary(avat)
user={
...
"avatar":avatar,
"avatar_file": binary_avatar
...
}
Nu som sagt... gör det bara lättare för dig själv och använd GridFS. Det är vad den är avsedd för.
Om du skulle använda GridFS kan det se ut så här:
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
...
}