2013-07-26 3 views
0

Я пытаюсь отобразить изображение на localhost. В качестве первого шага, я создал скрипт в Python СеверLocalhost не отображает изображения

#!/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).

Выполнение эквивалентно запуску файла в вашей оболочке.

Используйте 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

Смежные вопросы