sql >> Databasteknik >  >> NoSQL >> MongoDB

sparar bild till mongodb

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
    ...
}


  1. MongoDB:Hur tar man reda på om ett arrayfält innehåller ett element?

  2. Mongoose:Få hela listan över användare

  3. Redis vs. MongoDB:Jämför in-memory-databaser med Percona Memory Engine

  4. MongoDB varva ner flera arrayer