【问题标题】:Localhost fails to display images本地主机无法显示图像
【发布时间】:2013-07-26 15:36:02
【问题描述】:

我正在尝试在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 移到了 服务器目录。

【问题讨论】:

    标签: python image localhost cgi-bin


    【解决方案1】:

    您的代码正在尝试将 test.jpg 作为 cgi 脚本执行。如果您删除 CGIHttpRequestHandler 并改用 SimpleHTTPServer.SimpleHTTPRequestHandler 您将恢复您的图像。如果两者都需要,则需要将图像放在其他位置。

    【讨论】:

    • 我肯定需要在 html 上显示图像以及一些文本消息。该图像是在执行 python 脚本后生成的,因此需要 CGIHttpServer。如何处理这种情况? SimpleHTTP 在浏览器上显示图像,但我需要 CGIHttp 来生成它。
    • 将 CGI 脚本放在子目录中并从那里提供它?默认情况下,如果你把它放在 cgi-bin 中,它会做你想做的事情。
    【解决方案2】:

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

    执行相当于在你的shell中运行文件。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我确实创建了一个 html 页面,并显示文本。 test.jpg 在本地,但不会在浏览器上呈现。
      • 我不确定您到底想做什么,但要简单地显示图像,您必须将其嵌入到带有图像标签的 html 代码中。
      猜你喜欢
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2011-08-03
      • 1970-01-01
      相关资源
      最近更新 更多