2013-07-26 1 views
0

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에 몇 가지 텍스트 메시지와 함께 이미지를 표시해야합니다. 이미지는 파이썬 스크립트 실행 후 생성되므로 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