通过Python CGI下载图像

时间:2014-01-28 13:30:18

标签: python image svg http-headers cgi

我有一个Python cgi,它将svg转换为png文件,我希望将转换后的输出下载到用户的磁盘。

#the conversion stuff
print "Content-Type: image/png"
print "Content-Disposition: attachment; filename='pythonchart.png'"
print
print open("http:\\localhost\myproj\pythonchart.png").read()

这会产生一个包含‰PNG的png文件。

请帮忙吗?

2 个答案:

答案 0 :(得分:1)

您应该尝试以二进制模式open('filename', 'rb').read()

打开

答案 1 :(得分:0)

您正在从open()返回的文本模式流中读取二进制数据,并将二进制数据写入文本模式标准输出流。您必须以二进制模式打开文件,并将stdout转换为二进制模式。

import sys
print "Content-Type: image/png"
print "Content-Disposition: attachment; filename='pythonchart.png'"
print

if sys.platform == "win32":
    import os, msvcrt
    msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
print open("C:\\wamp\\www\\myproj\\pythonchart.png", "rb").read()

参考:Python 2.x - Write binary output to stdout?