web2py未显示上传的图像

时间:2014-05-20 06:12:14

标签: image web2py

我无法使用web2py在我的一个视图中显示图像。我在这里找到了类似的线程,但大多数都是指缩略图和blob&#39存储的图像。

以下是我所拥有的:


MODEL

db.define_table('foto',
                Field('archivo','upload'))

CONTROLLER

def mostrar():
    fotos = (db.foto)
    return locals()

查看

{{extend 'layout.html'}}
{{for foto in fotos:}}
    <img width="123px" src="{{=URL('download', args=fotos.archivo)}}" />
{{pass}}

据我了解,上面的内容将允许我查看在视图中上传的图片,但我得到了断开链接的图片,如下所示:

screenshot of the issue

如果我尝试更改args代码中的<img部分,从args=fotos.archivoargs=foto.archivo,我会收到<type 'exceptions.AttributeError'> 'Field' object has no attribute 'archivo'错误。

我很确定我在这里错过了一些重要的概念 - 我认为,如果使用'upload'作为类型,则图片保存在文件中系统。但是,我在某处读到download函数用于处理(文件系统存储文件,而不是blob),并且upload只要在SQLFORM中使用它就会将任何内容存储到文件系统中。 (与我在上面的代码中使用相同)。

1 个答案:

答案 0 :(得分:1)

fotos = (db.foto)

在上面,您只需返回Table对象。但是,此对象不包含任何记录 - 它只是数据库架构的表示形式。相反,您必须从数据库中明确选择记录:

fotos = db(db.foto).select()

以上是db(db.foto.id > 0).select(db.foto.ALL)的快捷方式(即,它会选择所有记录和所有字段)。

进行更改后,您还应将args=fotos.archivo更改回args=foto.archivo