sql >> Database >  >> NoSQL >> MongoDB

afbeelding opslaan in mongodb

Je hebt GridFS niet per se nodig voor het opslaan van bestanden in MongoDB, maar het maakt het zeker een leukere ervaring, omdat het het splitsen en opslaan van de binaire gegevens regelt, terwijl de metagegevens ook beschikbaar zijn. U kunt dan een ID opslaan in uw User document naar de avatarafbeelding.

Afgezien daarvan zou u binaire gegevens ook rechtstreeks in uw documenten kunnen opslaan, hoewel u in uw code de gegevens niet opslaat. Je opent het gewoon met PIL.Image , maar er vervolgens niets mee doen.

Ervan uitgaande dat u pymongo . gebruikt voor je stuurprogramma denk ik dat je de binaire gegevens gewoon in een Binary kunt stoppen container en bewaar deze vervolgens. Dit is niet door mij getest, maar ik neem aan dat het zou moeten werken:

from pymongo.binary import Binary

binary_avatar = Binary(avat)

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

Dat gezegd hebbende... maak het jezelf gewoon makkelijker en gebruik GridFS. Daar is het voor bedoeld.

Als u GridFS zou gebruiken, zou het er als volgt uit kunnen zien:

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. Controleer MongoDB-authenticatie met Java 3.0-stuurprogramma

  2. hoe de cache up-to-date te houden

  3. Hoe spoel ik redis db van python redis?

  4. Hoe ClassNotFoundException op te lossen:com.mongodb.connection.BufferProvider?