sql >> Database teknologi >  >> NoSQL >> MongoDB

gemmer billede til mongodb

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


  1. Hvordan indstiller jeg adgangskoden til Redis?

  2. Brug mock MongoDB-server til enhedstest

  3. Mongo DB Java 3.x-driver - Gruppér efter forespørgsel

  4. Model.find() returnerer tom i mongoose