Web2py:我应该如何显示存储在数据库中的上传图像?

时间:2011-06-13 18:10:35

标签: database image upload web2py

是否有web2py方式显示数据库表中的图像?

示例:

模特:

db.define_table=('images',Field('picture', 'upload' ))

控制器:

def somefunction(): to get the image.

我究竟应该如何“阅读”数据库中的图片?

观点:

<img src="{{somefunction}}" />

2 个答案:

答案 0 :(得分:16)

原样,您的模型不会将图像存储在数据库中 - 而是将图像存储在文件系统中,其新文件名存储在数据库中(在“图片”字段中)。如果要将图像本身存储在数据库中,请使用以下命令:

db.define_table('images',
    Field('picture', 'upload', uploadfield='picture_file')
    Field('picture_file', 'blob'))

无论是将图像存储在文件系统还是数据库中,都可以使用相同的方法来检索它们。 'welcome'脚手架应用程序在download()控制器中包含以下default.py操作:

def download():
    return response.download(request, db)

要检索图像,只需执行以下操作:

<img src="{{=URL('default', 'download', args=picture_name)}}" />

其中picture_name是存储在您要检索的特定图片的“picture”表格的“images”字段中的值。

有关详细信息,请参阅herehere

如果您需要进一步的帮助,请尝试询问mailing list

答案 1 :(得分:2)

或者,如果您使用web2py的默认方式将图片上传为文件,则可以使用:

在模特中:

db.define_table('images',Field('picture','upload'))

在控制器中:

def somefunction():
    pic = db(db.images).select().first().picture   #select first picture
    return dict(pic=pic)

在默认/ somefunction.html视图中:

{{extend 'layout.html'}}
<img  src="{{=URL( 'download', args=pic)}}" />

我知道在原始问题之后还有一段时间,但认为这可能有用,因为我花了一段时间才弄明白。