python、cgi-bin中向浏览器返回图像

发布于 2024-09-09 04:52:14 字数 436 浏览 5 评论 0原文

我正在尝试在 cgi-bin 中设置一个 python 脚本,该脚本仅返回内容类型为 image/png 的标头并返回图像。我尝试打开图像并使用 print f.read() 返回它,但这不起作用。

编辑: 我尝试使用的代码是:

print "Content-type: image/png\n\n"
with open("/home/user/tmp/image.png", "r") as f:
    print f.read()

这是在 ubuntu 服务器 10.04 上使用 apache。当我在 chrome 中加载页面时,我得到了损坏的图像图像,当我在 firefox 中加载页面时,我得到 The image http://localhost/cgi-bin/test.py" 无法显示,因为它包含错误。

I'm trying to set up a python script in cgi-bin that simply returns a header with content-type: image/png and returns the image. I've tried opening the image and returning it with print f.read() but that isn't working.

EDIT:
the code I'm trying to use is:

print "Content-type: image/png\n\n"
with open("/home/user/tmp/image.png", "r") as f:
    print f.read()

This is using apache on ubuntu server 10.04. When I load the page in chrome I get the broken image image, and when I load the page in firefox I get The image http://localhost/cgi-bin/test.py" cannot be displayed, because it contains errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清音悠歌 2024-09-16 04:52:14
  1. 您可能需要将文件打开为 "rb" (在基于 Windows 的环境中通常是这种情况。
  2. 简单地打印可能不起作用(因为它添加了 '\n' 等内容),最好只是 将其写入 sys.stdout
  3. 语句 print "Content-type: image/png\n\n" 实际上打印 3 个换行符(因为 print 会自动添加)末尾有一个“\n”,这可能会破坏您的 PNG 文件。

尝试:

sys.stdout.write( "Content-type: image/png\r\n\r\n" + file(filename,"rb").read() )
  1. HTML 响应需要回车符、换行符。
  1. You may need to open the file as "rb" (in windows based environments it's usually the case.
  2. Simply printing may not work (as it adds '\n' and stuff), better just write it to sys.stdout.
  3. The statement print "Content-type: image/png\n\n" actually prints 3 newlines (as print automatically adds one "\n" in the end. This may break your PNG file.

Try:

sys.stdout.write( "Content-type: image/png\r\n\r\n" + file(filename,"rb").read() )
  1. HTML responses require carriage-return, new-line
只为守护你 2024-09-16 04:52:14

标题后是否包含空行?如果没有,那么标题还没有结束!

打印'内容类型:image/png'
打印
打印 f.read()

Are you including the blank line after the header? If not, it's not the end of your headers!

print 'Content-type: image/png'
print
print f.read()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文