sql >> Databáze >  >> NoSQL >> MongoDB

uložení obrázku do mongodb

GridFS nutně nepotřebujete pro ukládání souborů v MongoDB, ale určitě to z něj dělá hezčí zážitek, protože zvládne rozdělování a ukládání binárních dat a zároveň zpřístupňuje metadata. Poté můžete uložit ID do svého User dokument k obrázku avatara.

Kromě toho byste také mohli ukládat binární data přímo ve svých dokumentech, ačkoli ve svém kódu data neukládáte. Jednoduše jej otevřete pomocí PIL.Image , ale pak s tím nic neuděláte.

Za předpokladu, že používáte pymongo pro váš ovladač si myslím, že můžete jednoduše zabalit binární data do Binary nádobu a poté ji uložte. Toto není mnou testováno, ale předpokládám, že by to mělo fungovat:

from pymongo.binary import Binary

binary_avatar = Binary(avat)

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

Když už bylo řečeno... jednoduše si to ulehčete a použijte GridFS. K tomu je určeno.

Pokud byste použili GridFS, mohlo by to vypadat takto:

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. Průvodce vývojáře k MongoDB Sharding

  2. Přehled Atlasu MongoDB:Část druhá

  3. Resque on Heroku cedar stack Počet pracovníků stále existuje i po ukončení pracovníka

  4. Jak se připojit ke dvěma dalším kolekcím s podmínkami