Localhost无法显示图像

时间:2013-07-26 15:36:02

标签: python image localhost cgi-bin

我正在尝试在localhost上显示图片。作为第一步,我在python中创建了一个服务器脚本

#!/usr/bin/env python

import BaseHTTPServer
import CGIHTTPServer
import cgitb; cgitb.enable()  ## This line enables CGI error reporting

server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
handler.cgi_directories = ["/"]

httpd = server(server_address, handler)
httpd.serve_forever()

图像位于执行此脚本的同一目录中。 随后在浏览器中输入http://localhost:8000/test.jpg

浏览器无法呈现图像并显示错误: The image "http://localhost:8000/test.jpg" cannot be displayed because it contains errors.

服务器脚本会抛出类似

的错误
  File "/usr/lib/python2.7/CGIHTTPServer.py", line 253, in run_cgi
    os.execve(scriptfile, args, env)
OSError: [Errno 8] Exec format error

我尝试过显示文本,服务器可以很好地运行很多例子。除了它无法加载图像。我哪里错了?


问题解决了。我将test.jpg移动到了一个子目录中 服务器目录。

3 个答案:

答案 0 :(得分:2)

您的代码正在尝试将test.jpg作为cgi脚本执行。如果删除CGIHttpRequestHandler而改为使用SimpleHTTPServer.SimpleHTTPRequestHandler,您将获得图像。如果你需要两者,那么你需要将图像放在其他地方。

答案 1 :(得分:0)

CGI用于执行服务器端脚本,而不是用于提供静态内容。因此,它将尝试执行正在服务的文件(在这种情况下,尝试执行图像):os.execve(scriptfile, args, env)

执行等同于在shell上运行文件。

SimpleHTTPServer用于静态内容,例如图片。

答案 2 :(得分:0)

我认为错误是因为您没有设置html页面。

您的python脚本虽然在您的localhost上运行服务器,但您需要html / css页面 实际显示图片和文字。