MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Bild in mongodb speichern

Sie brauchen GridFS nicht unbedingt zum Speichern von Dateien in MongoDB, aber es macht es sicherlich zu einer schöneren Erfahrung, da es das Aufteilen und Speichern der Binärdaten übernimmt und gleichzeitig die Metadaten verfügbar macht. Anschließend können Sie eine ID in Ihrem User hinterlegen Dokument zum Avatarbild.

Abgesehen davon könnten Sie auch Binärdaten direkt in Ihren Dokumenten speichern, obwohl Sie die Daten in Ihrem Code nicht speichern. Sie öffnen es einfach mit PIL.Image , tut dann aber nichts damit.

Angenommen, Sie verwenden pymongo für Ihren Treiber denke ich, was Sie tun können, ist einfach die Binärdaten in ein Binary zu packen Behälter und lagern Sie ihn dann. Dies ist von mir ungetestet, aber ich nehme an, es sollte funktionieren:

from pymongo.binary import Binary

binary_avatar = Binary(avat)

user={
    ...
    "avatar":avatar,
    "avatar_file": binary_avatar
    ...
}

Nachdem das gesagt ist ... machen Sie es sich einfach einfacher und verwenden Sie GridFS. Dafür ist es gedacht.

Wenn Sie GridFS verwenden würden, könnte es so aussehen:

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