如何在Python CGI页面中加载/显示图片

时间:2011-05-27 08:28:23

标签: python html cgi

我使用Python和CGI撰写了一些小调查。我正在尝试使用普通<img>标记显示图片,但即使图片与我的cgi脚本位于同一目录中,我的脚本也无法显示它。我还将标题更改为:

print "Content-type: text/html; image/jpeg"
print
print """<html> 
<head>
<title>You are going to be redirected</title> 
</head> 
<body bgcolor = #14b585>
<br>
 <p align=center><font>Helloooo</font></p>
 <img src="cat.jpeg" alt="cat" width="304" height="228"/> 
 <form action="./sample.py" method="post">
<p align=center><input type="submit" value="YES!" /></p>
 </form>
 </body>
 </html>

“”“

为什么?(这是一个非常小的jpg文件)

2 个答案:

答案 0 :(得分:2)

print "Content-type: text/html; image/jpeg"

请勿将标题更改为该标题。单个文档不能有多种内容类型(排除多部分文档,但浏览器不支持它们,而且格式不正确。)

您正在提供一个HTML文档,其中包含对图像的引用。图像将是一个单独的请求和响应。

print "Content-type: text/html"

或者,更好:

print "Content-type: text/html; charset=utf-8"

(假设你使用的是utf-8,你应该这样做。)

print """<html> 

您的Doctype丢失了。这将触发怪癖模式,这是不合需要的。您还有大量遗留的表示标记,应该由CSS替换。

<img src="cat.jpeg" alt="cat" width="304" height="228"/> 

上下文表明图像是装饰性的,因此替代文本应该是""(参见Alt texts in IMGS),但实际参考图像没有任何问题。

  

但即使图片与我的cgi脚本在同一目录中

因为HTML似乎没问题。您需要检查图像是否正确。

您可以直接输入网址来获取图片吗?

尝试时,网络服务器日志会说什么?

您的服务器可能被配置为尝试将目录中的所有内容视为可执行文件,无论文件扩展名是什么,因此可能尝试将图像作为CGI程序运行(这显然会很明显)失败)。如果是这样,那么您可以移动图像或更改服务器的配置。

我刚刚注意到这个评论:

  

我在浏览器中执行了此操作:localhost / cgi-bin / cat.jpg并且出现错误,我检查了日志,执行格式错误:执行'/ home / hossein / public_html / cgi-bin / cat .jpg'失败

这就是发生的事情。移动图像是最简单的解决方案。

答案 1 :(得分:1)

您的apache配置为使用cgi-bin目录作为CGI脚本文件夹,因此任何尝试从此文件夹apache获取文件的请求都会尝试将其作为CGI脚本执行。要使您的图像可见,请将其移至www / html文件夹。