瀏覽器顯示HTML文檔。 HTML文檔可以包含div
,span
,p
等標籤中的文本,只需將文本包含在元素中即可。例如,<div>Hello!</div>
顯示文本Hello
。但它們不直接包含圖像;相反,它們包括鏈接到圖像,作爲img
標記的src
。例如,<img src="http://example.com/foo.png">
顯示foo.png圖像。
所以,有兩種方法可以做你想做的。
簡單的方法是,以暴露2個資源(與單獨的網址):(1)PNG圖像,和(2)包含鏈接到PNG圖像(和一個HTML頁面包含文本直)。
例如...
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
,將觸發你的第二個腳本,所以他們將會得到如下的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,而不是兩個:現在
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>
您好,我從excuting html文件,Python文件,當我在文本框中輸入一些關鍵字,然後點擊提交,然後它會EXCUTE蟒蛇文件。所以python文件生成兩個文件1).png和2)文本文件。所以我的要求是當我點擊HTML提交時立即在Web瀏覽器中顯示.png和.txt文件。
好的,讓我解釋一下。
我假設你使用傳統的表單提交連接到傳統的CGI服務器。當您單擊Web瀏覽器中的提交按鈕時,會向構建HTML文檔的CGI腳本發送請求。該文檔包含文本文件,並且還包含鏈接到第二個CGI腳本的圖像。您的網絡瀏覽器通過第二個CGI的鏈接自動加載圖像,該CGI生成並返回顯示的PNG文件。因此,您可以在一個瀏覽器頁面中看到圖像和文本。
最後一件事:你可能不希望把文本文件,你的/ var/WWW層次裏面,如果您使用的是data:
URL你可能不希望把圖像文件也有。
直接使用'file()'很不尋常:建議使用'open()',這是打開文件的標準方式。此外,你不需要在路徑中使用原始字符串,因爲它不包含任何轉義('\')字符。 – EOL
你的代碼混淆了兩件事。 'webbrowser.open()'用於在運行腳本的同一臺機器上的Web瀏覽器中打開一個URL。如果您在CGI/WSGI腳本中使用它,它不會影響作爲客戶端連接的Web瀏覽器;它會在_server_上打開一個瀏覽器。 – abarnert