speichern von Bild zu mongodb
versuche yo tun dies mit tornado -, pil-und mongodb.
avat = self.request.files['avatar'][0]["body"]
nomfich = self.request.files['avatar'][0]["filename"]
try:
image = Image.open(StringIO.StringIO(buf=avat))
size = image.size
type = image.format
avatar = r"/profile-images/{0}/{1}".format(pseudo, nomfich)
except IOError:
self.redirect("/erreur-im")
und die Datenbank-code:
user={
"pseudo": pseudo,
"password":password,
"email":email,
"tel":tel,
"commune":commune,
"statut":statut,
"nom":nom,
"prenom":prenom,
"daten":daten,
"sexe":sexe,
"avatar":avatar
}
self.db.essog.insert(user)
und es funktionierte ok, die "avatar" wird gespeichert, aber es ist kein Bild, es spart nur ein name!
mein problem ist:
- zu verstehen, wie die Datenbank beschäftigt sich mit Bildern, muss ich das Bild.save(Pfad, format), aber der Weg, ist es einen Pfad von einem normalen system-Pfad (windows oder linux)?
- das Profil ist einfach, und ich habe begrenzt das Bild hochladen zu 500ko, und das Dokument in mongodb ist 16mb, so das Dokument behandelt das gesamte Profil, aber ich gridFS auch für kleine Dokument, wenn es enthält das Bild?
das Hauptproblem ist im Pfad des Bildes speichern, bin stecken geblieben, und es ist das erste mal beschäftige ich mich mit der Datenbank, so tut mir Leid für diese Frage.
Ich kann nicht ganz Folgen, was Sie zu tun versuchen.
formatieren Sie Ihre source-code richtig
sorry, da habe ich schon hochgeladen nur das fragment der code-sorry für die Verzögerung der Antwort unten gab mir die Erklärung 😀 danke 🙂
avatar
sieht aus wie ein Datei-Pfadnamen, dass ich nicht sehen, verwendet werden, um tatsächlich speichern Sie das Bild hochgeladen und ich sehe nicht, dass Sie versuchen, das Bild zu speichern Byte als Teil eines user
Dokument entweder.formatieren Sie Ihre source-code richtig
sorry, da habe ich schon hochgeladen nur das fragment der code-sorry für die Verzögerung der Antwort unten gab mir die Erklärung 😀 danke 🙂
InformationsquelleAutor Abdelouahab Pp | 2012-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie nicht unbedingt GridFS zur Speicherung von Dateien in MongoDB, aber sicherlich macht es ein schöneres Erlebnis, weil es mit der Aufteilung und Speicherung der binären Daten, wobei die Metadaten ebenfalls zur Verfügung. Sie können dann das speichern einer ID in Ihrem
User
Dokument, um das avatar-Bild.Abgesehen davon, könnte man auch speichern von binären Daten direkt in Ihre Dokumente, wenn Sie in Ihrem code, Sie sind nicht die Daten speichern. Sie einfach öffnen Sie es mit
PIL.Image
, aber dann nichts zu tun mit es.Vorausgesetzt, Sie verwenden
pymongo
für den Fahrer, denke ich, was Sie tun können, ist, nur wickeln Sie das binäre Daten in einemBinary
- container, und speichern Sie es dann. Dies ist ungetestet von mir, aber ich nehme an, es sollte funktionieren:Nun, dass gesagt wird... nur machen es leichter auf sich selbst und verwenden Sie GridFS. Das ist, was es für gemeint.
Wenn Sie auf GridFS, es könnte so Aussehen:
Ja, abrufen, wieder Sie einfach eine "get" - mit dieser ID, wird im Benutzerprofil gespeichert werden, als "avatar_id"
Hallo ich habe versucht den code und es hat funktioniert, weiß nicht, ob es ein Tippfehler ist, aber es ist von bson.binäre und nicht pymongo.binäre und erhalten, die Arbeit wird für beide gridfs und binäre?
Pymongo verwendet bson-so seine von der bson-Modul so oder so. Und Nein, es wäre völlig anders, wenn Sie verwendet das Binäre Konzept und setzen es direkt in der user-doc. Es würde einfach sein, einen Binär-blob in der doc. Es gibt keine spezifischen IDS. Gridfs geben Sie eine ID für Sie als Referenz zu verwenden, in Ihrem Benutzer-doc.
Sie müssen PIL tut für Umbauten, wie etwa den miniaturen. Die neuen thumbnails, müsste auch gespeichert werden, in GridFS. Für eine meiner Seiten, die ich speichern Sie die wichtigsten Bild, und fügen Sie dann diese ID als parent-id in der gridfs Metadaten der Vorschaubilder. Es gibt kein system, filepath, weil Sie einen anderen Speichermechanismus. Zum servieren, können Sie eine einfache Ansicht, dass dient das Bild aus einer ID. Für die Produktion benutze ich die gridfs-plugins für nginx, damit Sie direkt bedient. Dann wird es nicht gehen durch django. Die django-Ansicht ist nur für dev.
InformationsquelleAutor jdi
Dies ist der code zum einfügen und abrufen Bild in mongodb ohne mit gridfs.
InformationsquelleAutor Shiva
es ist ein Fehler, in :
die korrekte syntax ist:
thk Euch allen für Eure endlose Unterstützung
Luca
InformationsquelleAutor barzotto
Versuchen Sie es mit carierwave-mongoid https://github.com/jnicklas/carrierwave-mongoid
Ich denke, es ist eine einfache und einfache Möglichkeit für Sie, in diesem Fall
Oh sorry mein Fehler 🙂
kein problem, Sie sind willkommen, Sie versucht zu helfen 🙂
InformationsquelleAutor Thomas Tran
Müssen Sie zum speichern von binären Daten mit Hilfe der Binär - () Datentyp pymongo.
http://api.mongodb.org/python/2.0/api/bson/binary.html#module-bson.binary
InformationsquelleAutor Andreas Jung