2013-07-26 172 views
0

我试图在localhost上显示图像。作为第一步,我已经建立在PythonLocalhost无法显示图像

#!/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移动到 服务器目录中的一个子目录中。

回答

2

你的代码试图执行test.jpg作为cgi脚本。如果您删除了CGIHttpRequestHandler,而是使用SimpleHTTPServer.SimpleHTTPRequestHandler,则会返回图像。如果你需要两个,那么你需要把图像放在别的地方。

+0

我绝对需要在html上显示图像以及几条短信。该图像是在执行python脚本后生成的,因此需要CGIHttpServer。如何处理这种情况? SimpleHTTP在浏览器上显示图像,但我需要CGIHttp来生成它。 – Vikram

+0

把CGI脚本放在一个子目录中并从那里提供它?默认情况下,它看起来像是如果你把它放在cgi-bin中,它会做你想做的。 –

0

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

执行等同于在shell中运行该文件。

对于静态内容(如图像)使用SimpleHTTPServer

+0

请参阅我对Todd Berman的评论 – Vikram

0

我相信错误是因为你没有html页面设置。

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

+0

我确实创建了一个html页面,并显示文本。 test.jpg在本地,但不在浏览器上呈现。 – Vikram

+0

http:// localhost:8000/test.jpg不是显示图像文件的方法。 – user2498110

+0

我不确定你想要做什么,但要简单地显示图像,你必须将它嵌入到带有图像标签的html代码中。 test image user2498110