Question

I am attempting to display an image on localhost. As a first step, I have created a sever script in 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()

The image is placed within the same directory where this script is executing. Subsequently http://localhost:8000/test.jpg is typed in the browser.

The browser fails to render the image with an error: The image "http://localhost:8000/test.jpg" cannot be displayed because it contains errors.

The server script throws an error like

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

I have tried displaying text and the server works fine with lot of examples. Except that it fails to load images. Where am I going wrong?


The problem was solved. I moved the test.jpg into a sub-directory within the server directory.

Was it helpful?

Solution

Your code is attempting to execute the test.jpg as a cgi script. If you remove the CGIHttpRequestHandler and instead use SimpleHTTPServer.SimpleHTTPRequestHandler you will get your image back. If you need both, then you need to put the image somewhere else.

OTHER TIPS

CGI is used to execute server-side scripts, not to serve static content. It will therefore attempt to execute files that are being served (in this case, attempting to execute an image): os.execve(scriptfile, args, env).

Execution is equivalent to running the file at your shell.

Use SimpleHTTPServer for static content, such as images.

I believe the error is because you have no html page setup.

Your python script although is running a server on your localhost, but you need html/css pages to actually display pictures and words.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top