我正在尝试在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移动到了一个子目录中 服务器目录。
答案 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页面 实际显示图片和文字。