Mongodb can';t使用Tornado从gridFS获取图片

Mongodb can';t使用Tornado从gridFS获取图片,mongodb,tornado,gridfs,Mongodb,Tornado,Gridfs,我的问题是,我可以将图片保存到gridFS,即使它在那里,我已经验证过了,它会从控制台向我显示piture及其名称和大小。 代码如下: conn=连接() 保存到数据库的类: 类配置文件(tornado.web.RequestHandler): 从数据库读取的类: 类profile(tornado.web.RequestHandler): 和在视图中(profile.html) img src=“{{avatar}}”/> 但是什么也没有显示 除非您想使用一个url作为图像源,否则您应该使用ur

我的问题是,我可以将图片保存到gridFS,即使它在那里,我已经验证过了,它会从控制台向我显示piture及其名称和大小。 代码如下:

conn=连接()

保存到数据库的类:

类配置文件(tornado.web.RequestHandler):

从数据库读取的类:

类profile(tornado.web.RequestHandler):

和在视图中(profile.html)

img src=“{{avatar}}”/>


但是什么也没有显示

除非您想使用一个url作为图像源,否则您应该使用url,然后创建一个视图以从该视图返回数据。如果您使用的是nginx,您可能会对该模块感兴趣,以获得更好的性能。

除非您希望使用一个url作为图像源,否则您应该使用url,然后创建一个视图以从该视图返回数据。如果您正在使用nginx,您可能会对该模块感兴趣,以获得更好的性能。
img
标记的
src
属性(通常)不包含图像数据本身,而是包含图像的URL。我认为您混淆了两个不同的请求和响应:

  • 包含
    标记的HTML页面:

    class Profil(tornado.web.RequestHandler):
        self.render('profile.html',
            avatar=self.reverse_url('avatar', avatar_id))
    
  • 映像本身(需要单独的处理程序):


  • img
    标记的
    src
    属性(通常)不包含图像数据本身,而是包含图像的URL。我认为您混淆了两个不同的请求和响应:

  • 包含
    标记的HTML页面:

    class Profil(tornado.web.RequestHandler):
        self.render('profile.html',
            avatar=self.reverse_url('avatar', avatar_id))
    
  • 映像本身(需要单独的处理程序):


  • 对不起,我不明白这个?!为什么在正常情况下,我只能显示图像源路径,它将是好的,它不是sace处理数据库时?我是否理解,我必须重新保存到一个目录?否-只是在图像的src中输出图像的内容-如果这样做,则必须使用数据uri。通常你会提供一个URL,返回内容和标题,内容类型为dataheu…对不起,我是一个初学者,这是我第一次看到这个,我不理解维基百科中给出的示例,你能用一个虚构的“头像id”给我解释一个简单的示例吗?这是我没有得到的另一个答案:他说:“序列化二进制文件也会增加它们的大小(对于base64,大约增加30%),并且需要插入和检索文件的处理能力。”对不起,但我不明白这一点?!为什么在正常情况下,我只能显示图像源路径,它将是好的,它不是sace处理数据库时?我是否理解,我必须重新保存到一个目录?否-只是在图像的src中输出图像的内容-如果这样做,则必须使用数据uri。通常你会提供一个URL,返回内容和标题,内容类型为dataheu…对不起,我是一个初学者,这是我第一次看到这个,我不理解维基百科中给出的示例,你能用一个虚构的“头像id”给我解释一个简单的示例吗?这是我没有得到的另一个答案:他说:“序列化二进制文件也会增加它们的大小(对于base64,大约增加30%),并且需要插入和检索文件的处理能力。”啊,这就是我今天早上在研究Slock开源项目后问的问题。现在我明白了,谢谢:)啊,这就是我今天早上在研究了Slock开源项目后问的问题。现在我明白了,谢谢:)
    class Profil(tornado.web.RequestHandler):
        self.render('profile.html',
            avatar=self.reverse_url('avatar', avatar_id))
    
    class Avatar(tornado.web.RequestHandler):
        def get(self, avatar_id):
            avatar = self.fs.get(avatar_id)
            self.set_header('Content-Type', avatar.content_type)
            self.finish(avatar.read())