繁体   English   中英

如何使用python在浏览器中显示.txt文件内容

[英]how to display .txt file contents to the browser using python

我们有一个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在浏览器中同时显示两者呢?

浏览器显示HTML文档。 HTML文档可以在divspanp等标记中包含文本,只需将文本包含在元素中即可。 例如, <div>Hello!</div>显示文本Hello 但是它们不直接包含图像。 而是包含指向图像的链接 ,作为img标签的src 例如, <img src="http://example.com/foo.png">显示foo.png图像。

因此,有两种方法可以做您想要的。


简单的方法是公开两个资源(具有单独的URL):( 1)PNG图像,和(2)HTML页面,其中包含指向PNG图像的链接(并直接包含文本)。

例如…

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文件,当我在文本框中输入一些关键字并单击Submit时,它将摘录python文件。 因此python文件会生成两个文件1).png和2)文本文件。 所以我的要求是,当我单击html中的提交时,立即在Web浏览器中显示.png和.txt文件。

好,让我解释一下。

我假设您正在使用连接到传统CGI服务器的传统表单提交。 在Web浏览器中单击“提交”按钮时,这会将请求发送到构建HTML文档的CGI脚本。 该文档包含文本文件,还包含链接到第二个CGI脚本的图像。 您的Web浏览器通过链接到第二个CGI来自动加载图像,第二个CGI生成并返回PNG文件,该文件将显示出来。 因此,您可以在一个浏览器页面中看到图像和文本。


最后一件事:您可能不想将文本文件放在/ var / www层次结构中,并且如果您使用的是data: URL,您也可能不想在其中放置图像文件。

如果要显示两种类型的数据,则需要:

  • 有两个单独的HTTP请求
  • 使用一种可以嵌入另一种格式的数据格式(例如,用HTML代替文本,将PNG嵌入URI为data:方案)。

您不能同时返回文本文档和PNG图片。

您可以使用Python创建一个包含文本和图像内容的简单HTML文件,然后在浏览器中打开该文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM