4

ファイルとファイルを同じブラウザにtest.py表示する必要があるがあります。以下は私のコードです:.png.txt

print "Content-type: image/png\n"
print file(r"/var/www/cgi-bin/testpie.png", "rb").read()
myurl = "file://var/www/html/test.txt"

webbrowser.open(myurl)

しかし、私は.pngブラウザでファイルしか取得していません。では、Pythonを使用してブラウザで両方を表示するにはどうすればよいですか?

4

3 に答える 3

4

ブラウザは HTML ドキュメントを表示します。HTML ドキュメントでは、要素内にテキストを含めるだけdivで、spanp、 などのタグにテキストを含めることができます。たとえば<div>Hello!</div>、テキストを表示しますHello。ただし、画像が直接含まれているわけではありません。代わりに、タグの として画像へのリンクが含まれています。たとえば、foo.png イメージを表示します。srcimg<img src="http://example.com/foo.png">

したがって、やりたいことを行うには2つの方法があります。


簡単な方法は、(別々の URL で) 2 つのリソースを公開することです: (1) PNG 画像、および (2) PNG 画像へのリンクを含む (テキストを直接含む) HTML ページ。

例えば…</p>

testpie_image.py:

print "Content-type: image/png\n"
print open(r"/var/www/cgi-bin/testpie.png", "rb").read()

testpie.py:

print """Content-type: text/html

<html><head></head><body>
<img src="testpie_image.py" />
<div>{}</div>
</body></html>
""".format(open(r"/var/www/html/test.txt").read())

ここで、誰かが を参照するとhttp://example.com/cgi-bin/testpie.py、2 番目のスクリプトがトリガーされ、次のような HTML ページが表示されます。

<html><head></head><body>
<img src="testpie_image.py" />
<div>Blah blah this is my text file.</div>
</body></html>

ブラウザは へのリンクをたどりhttp://example.com/cgi-bin/testpie-image.pyます。これにより、最初のスクリプトがトリガーされ、PNG 画像が取得されます。


より難しい方法は、 と呼ばれる特別な種類の URL スキームdata:を使用することです。これにより、別のリソースへのリンクであるかのようにデータをインラインで埋め込むことができます。埋め込むにはもう少し作業が必要ですが、必要な URL は 2 つではなく 1 つだけです。

print """Content-type: text/html

<html><head></head><body>
<img src="data:image/png;base64,{}"</img>
<div>{}</div>
</body></html>
""".format(open(r"/var/www/cgi-bin/testpie.png", "rb").read().encode("base64"),
           open(r"/var/www/html/test.txt").read())

これで、誰かが を参照するhttp://example.com/cgi-bin/testpie.pyと、次のような HTML ページが表示されます。

<html><head></head><body>
<img src="data:image/png;base64,1Ab…
Z2y" />
<div>Blah blah this is my text file.</div>
</body></html>

こんにちは、HTML ファイルから Python ファイルを実行しています。テキスト ボックスにキーワードを入力して [送信] をクリックすると、Python ファイルが実行されます。そのため、python ファイルは 1) .png と 2) テキスト ファイルの 2 つのファイルを生成します。私の要件は、HTMLで送信をクリックするとすぐに.pngおよび.txtファイルをWebブラウザーに表示することです。

わかりました、説明させてください。

従来の CGI サーバーに接続された従来のフォーム送信を使用していると仮定します。Web ブラウザーで送信ボタンをクリックすると、HTML ドキュメントを作成する CGI スクリプトに要求が送信されます。このドキュメントにはテキスト ファイルが含まれており、2 つ目の CGI スクリプトにリンクされた画像も含まれています。Web ブラウザーは、2 番目の CGI へのリンクをたどることによって、画像を自動的に読み込みます。これにより、PNG ファイルが生成されて返され、表示されます。したがって、画像とテキストが 1 つのブラウザー ページに表示されます。


最後に 1 つ: テキスト ファイルを /var/www 階層内に配置したくないでしょう。また、data:URL を使用している場合は、そこに画像ファイルを配置したくないでしょう。

于 2013-04-15T10:23:19.720 に答える
0

テキストと画像の両方のコンテンツを含む単純な HTML ファイルを Python を使用して作成し、このファイルをブラウザーで開くことができます。

于 2013-04-15T10:05:42.090 に答える