MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

zapisywanie obrazu do mongodb

Niekoniecznie potrzebujesz GridFS do przechowywania plików w MongoDB, ale z pewnością sprawia to, że jest to przyjemniejsze, ponieważ obsługuje dzielenie i zapisywanie danych binarnych, jednocześnie udostępniając metadane. Następnie możesz przechowywać identyfikator w swoim User dokument do obrazu awatara.

Poza tym możesz również przechowywać dane binarne bezpośrednio w swoich dokumentach, chociaż w swoim kodzie nie zapisujesz danych. Po prostu otwierasz go za pomocą PIL.Image , ale potem nic z tym nie robimy.

Zakładając, że używasz pymongo dla twojego sterownika, myślę, że możesz po prostu zawinąć dane binarne w Binary pojemnik, a następnie przechowuj go. To nie jest przeze mnie testowane, ale zakładam, że powinno działać:

from pymongo.binary import Binary

binary_avatar = Binary(avat)

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

Skoro już to zostało powiedziane... po prostu ułatw sobie to i korzystaj z GridFS. Do tego jest przeznaczony.

Gdybyś miał użyć GridFS, mogłoby to wyglądać tak:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wdrożyć bazę danych Open edX MongoDB w celu zapewnienia wysokiej dostępności?

  2. Przegląd indeksowania bazy danych dla MongoDB

  3. Jak zamienić podciąg w dokumencie mongodb

  4. Czy mongoDB ma problemy z ponownym połączeniem, czy robię to źle?

  5. Mongodb Mongoimport zbyt duży:Błędy analizy błędów