为什么不先将图像保存到文件中就不能从函数中返回图像?

2024-10-01 17:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python和web2py的新手,目前正面临一个奇怪的问题。 我有图片(图片)存储在我的数据库(SQL Server)中,我正试图在我的网站上显示。我已经成功地访问了数据库,并把信息带到了网页上,但我对图片有问题。在

最后,经过长时间的尝试,我终于找到了我的问题,这可以在下面的“下载”函数代码中看到。如果我试图从数据库中读取图像并将其返回,web浏览器就会卡住,什么也不显示。如果我将图像保存到一个临时静态文件中,然后读取它,然后返回结果,那么一切正常。在

我唯一的猜测是它和变量的范围有关,但我不确定。我的代码是:

def download():

    cursor = erpDbCnxn.cursor()
    cursor.execute("SELECT Picture FROM KMS_Parts WHERE PartNo = '%s'" % request.args(0))
    row = cursor.fetchone()

    if row:
        dbpic = row.Picture

        f = open ("C:/Users/Udi/Desktop/tmp.jpg", "wb")  ##This is just for the test
        f.write(dbpic)                                   ##This is just for the test
        f.close()                                        ##This is just for the test

        f = open ("C:/Users/Udi/Desktop/tmp.jpg", "rb")  ##This is just for the test
        filepic = f.read()                               ##This is just for the test
        f.close()                                        ##This is just for the test

        return filepic                                   ##Returning dbpic doesn't work
    else:
        return 

Tags: the代码test图像数据库foris图片
2条回答

在web2py中,不能简单地返回file对象,而必须使用^{}

    import cStringIO
    file = cStringIO.StringIO(row.Picture)
    return response.stream(file)

您还可以考虑使用web2pydal并利用其内置的存储和检索文件的功能(请参见herehere)。在

对于那些想知道最终结果的人: 看起来这是在以下web2py版本中解决的。 目前我只是做“返回dbpic”和它的工作很好。在

相关问题 更多 >

    热门问题