[英]How to loading/show a picture in a Python CGI page
我使用 Python 和 CGI 编写了一个小调查。 我正在尝试使用普通的<img>
标签显示图片,但是即使图片与我的 cgi 脚本位于同一目录中,我的脚本也无法显示它。 我还将 header 更改为:
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文件)
print "Content-type: text/html; image/jpeg"
不要将 header 更改为此。 单个文档不能有多种内容类型(不包括多部分文档,但浏览器不支持它们,这不是正确的格式)。
您正在交付 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"/>
上下文表明图像是装饰性的,因此替代文本可能应该是""
(请参阅 IMGS 中的替代文本),但对图像的实际引用并没有错。
但是即使图片与我的 cgi 脚本在同一目录中
由于 HTML 似乎没问题。 您需要检查图像是否正确。
您可以通过直接输入 URL 来访问图像吗?
当您尝试时,web 服务器日志说什么?
您的服务器可能被配置为尝试将目录中的所有内容视为可执行文件,无论文件扩展名是什么,因此它可能会尝试像运行 CGI 程序一样运行映像(这显然会失败)。 如果是这样,那么您可以移动图像或更改服务器的配置。
我刚刚注意到这个评论:
我在浏览器中执行此操作:localhost/cgi-bin/cat.jpg 出现错误,我检查了日志,它 Exec format error: exec of '/home/hossein/public_html/cgi-bin/cat.jpg'失败的
这就是正在发生的事情。 移动图像是最简单的解决方案。
您的 apache 被配置为使用 cgi-bin 目录作为 CGI 脚本文件夹,因此任何尝试从该文件夹 apache 获取文件的请求都尝试将其作为 CGI 脚本执行。 要使您的图像可见,请将其移至 www/html 文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.