我使用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文件)
答案 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文件夹。