无法通过Apache Server在Python提供的Web浏览器中显示图像

时间:2011-08-07 10:11:38

标签: python apache2 cgi

我试图通过Python的Apache服务器在Web浏览器中显示图像文件。我正在使用:
windows 7
apache http server 2.2
python 2.7

httpd.conf中的配置:

DocumentRoot "C:/Apache2.2/htdocs"
RewriteRule ^images/(.+)$       /imagetest.py?img=$1 [QSA,L]
htdocs文件夹下的

imagetest.py

import cgitb; cgitb.enable()
import cgi

form = cgi.FieldStorage()
imgName = form.getvalue("img")
print "Content-type: image/jpeg"
print
print file(r"C:/imageFolder/" + imgName, "rb").read()

# Also tried 
# sys.stdout.write( "Content-type: image/jpeg\n\n" + file("C:/imageFolder/" + imgName, "rb").read() )
# instead of "print"s above

http://localhost/images/0001.jpg网址给出;
- Firefox上出现The image cannot be displayed because it contains errors错误,
- Chrome没有任何内容 但在这两种情况下,使用http状态代码200获取图像(大约1 MB)(使用Firebug查看) 有什么建议吗? 另外,这样做的方式是正确的吗?我决定使用cgi,因为这个服务器只会间接地提供图像和一些视频文件(即通过python脚本)。我的意思是,那里没有复杂的操作。但是,此服务器应该快速可靠地处理许多请求。感谢。

1 个答案:

答案 0 :(得分:2)

file.read() 保证读取整个文件。使用shutil.copyfileobj()将文件内容复制到sys.stdout

或者,更好的是,启用并使用mod_xsendfile