是否有web2py方式显示数据库表中的图像?
示例:
模特:
db.define_table=('images',Field('picture', 'upload' ))
控制器:
def somefunction(): to get the image.
我究竟应该如何“阅读”数据库中的图片?
观点:
<img src="{{somefunction}}" />
答案 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
”字段中的值。
如果您需要进一步的帮助,请尝试询问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)}}" />
我知道在原始问题之后还有一段时间,但认为这可能有用,因为我花了一段时间才弄明白。