如何从MongoDB检索图像文件以在HTML页面中显示

4

我已成功将图像文件以二进制格式存储在MongoDB中。但是,当我从MongoDB获取图像时,我得到的仍然是相同的二进制格式。但我需要这个图像文件。请有人能帮忙吗?

这是我使用的代码

def retrieve(request):

  db=pymongo.connection.Connection('localhost',27017).demo1
  grid=gridfs.GridFS(db)
  output=grid.get_last_version(filename='shiva.jpg')
  return HttpResponse(output)

我在Web开发中没有Python的经验,但是你需要在HTTP响应头中设置mime类型为image/jpeg,这样用户的Web浏览器就知道它接收到了一张图片。 - Philipp
1
希望我在另一个问题中的回答能对你有所帮助。https://dev59.com/3n3aa4cB1Zd3GeqPXghm#42950170 - CoderYel
希望我在另一个问题中的回答能对你有所帮助。https://dev59.com/3n3aa4cB1Zd3GeqPXghm#42950170 - CoderYel
1个回答

3

你好,我已经成功地使用Python从MongoDB中插入和检索图片。

def insert_image(request):
    with open(request.GET["image_name"], "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())
    print encoded_string
    abc=db.database_name.insert({"image":encoded_string})
    return HttpResponse("inserted")

def retrieve_image(request):
    data = db.database_name.find()
    data1 = json.loads(dumps(data))
    img = data1[0]
    img1 = img['image']
    decode=img1.decode()
    img_tag = '<img alt="sample" src="data:image/png;base64,{0}">'.format(decode)
    return HttpResponse(img_tag)

对不起,我是Python的新手,请问"rb"是什么意思? "image_name"是否指的是我们存储图像的变量名称? - Louis B
转储(data)的意思是什么? - Shekhar Koirala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接