繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM