浏览器显示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