2011-02-01 3 views
1

Je veux servir l'image de GridFS directement à partir du script python, mais seulement ce que je vois est écran vide:mongo GridFS avec python

#!/usr/bin/env python 

from pymongo import Connection 
import gridfs 

db = Connection().gridfs_example 
fs = gridfs.GridFS(db) 

f= fs.get_last_version('myimage') 

print "Content-type: %s \n\n " % f.content_type 
print "Content-Length: %d \n\n" % f.length 
print f.read() 

si j'écris sortie f.read() I fichier capable de voir l'image « valide » Je en mesure de montrer cette image de FS locales:

#!/usr/bin/env python 

img = open('image.jpg','rb').read() 
print "Content-type: image/jpeg" 
print "Content-Length: %d\n" % len(img) 
print img 

ce que je fait de mal?

Répondre

0

Il serait utile si nous pouvions voir une sortie brute de votre script.

Une chose à vérifier est que les en-têtes de réponse sont correctement terminés. L'instruction print ajoute un caractère de nouvelle ligne à la fin de la sortie, ce qui signifie que vous pouvez supprimer le second '\ n' de la chaîne d'en-tête de type de contenu.

1
fs = gridfs.GridFS(db) 

est la ligne incriminée. Le constructeur GridFS prend une instance de Database, pas un objet de connexion. Donc, vous devriez faire quelque chose comme:

conn = Connection() 
db = conn['mydb'] 
fs = gridfs.GridFS(db) 

Espérons que cela aide!