0

に画像を表示しようとしています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 をサーバー ディレクトリ内のサブディレクトリに移動しました。

4

3 に答える 3

2

あなたのコードは test.jpg を cgi スクリプトとして実行しようとしています。CGIHttpRequestHandler を削除し、代わりに SimpleHTTPServer.SimpleHTTPRequestHandler を使用すると、イメージが返されます。両方が必要な場合は、画像を別の場所に配置する必要があります。

于 2013-07-26T15:38:28.240 に答える
0

CGI は、静的コンテンツを提供するためではなく、サーバー側のスクリプトを実行するために使用されます。したがって、提供されているファイルの実行を試みます (この場合は、イメージの実行を試みます): os.execve(scriptfile, args, env).

実行は、シェルでファイルを実行するのと同じです。

SimpleHTTPServer画像などの静的コンテンツに使用します。

于 2013-07-26T15:38:15.223 に答える
0

HTMLページの設定がないため、エラーが発生したと思います。

Python スクリプトはローカルホストでサーバーを実行していますが、実際に画像や単語を表示するには html/css ページが必要です。

于 2013-07-26T15:39:58.627 に答える