我是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
答案 0 :(得分:0)
在web2py中,您不能简单地返回文件对象,而必须使用response.stream
:
import cStringIO
file = cStringIO.StringIO(row.Picture)
return response.stream(file)
答案 1 :(得分:0)
只要是想知道最终结果的人: 看起来这是在以下版本的web2py中解决的。 目前,我只是在做“ return dbpic”,它工作正常。