我们有一个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显示它们?
答案 0 :(得分:4)
浏览器显示HTML文档。 HTML文档可以包含div
,span
,p
等标记中的文本,只需将文本包含在元素中即可。例如,<div>Hello!</div>
会显示文字Hello
。但它们不直接包含图像;相反,它们包含链接到图像,作为src
标记的img
。例如,<img src="http://example.com/foo.png">
显示foo.png图像。
所以,有两种方法可以做你想做的事。
简单的方法是公开两个资源(使用单独的URL):( 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图片。
更难的方法是使用一种名为data:
的特殊URL方案,它允许您在线嵌入数据,就好像它是指向单独资源的链接一样。你需要做更多的工作来嵌入它,但这意味着你只需要一个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>
嗨,我从html文件中删除了一个python文件,当我在文本框中输入一些关键字并单击“提交”时,它将执行python文件。所以python文件生成两个文件1).png和2)文本文件。所以我的要求是当我点击html中的提交时立即在网络浏览器中显示.png和.txt文件。
好的,让我解释一下。
我假设您正在使用连接到传统CGI服务器的传统表单提交。单击Web浏览器中的“提交”按钮时,会向构建HTML文档的CGI脚本发送请求。该文档包含文本文件,还包含链接到第二个CGI脚本的图像。您的Web浏览器会通过跟随第二个CGI的链接自动加载图像,该CGI会生成并返回显示的PNG文件。因此,您可以在一个浏览器页面中看到图像和文本。
最后一件事:您可能不希望将文本文件放在/ var / www层次结构中,如果您使用的是data:
URL,则可能不希望放置图像文件那里有。
答案 1 :(得分:1)
如果要显示两种类型的数据,则需要:
data:
方案的URI嵌入)。您无法同时返回文本文档和PNG图像。
答案 2 :(得分:0)
您可以使用包含文本内容和图像的Python创建一个简单的HTML文件,并在浏览器中打开此文件。