以下载python的形式提供stringIO(pdf)

我有一个cgi python脚本,将matplotlib生成的图片保存为pdf到stringIO和png到stringIO。 png图片将显示在一个新的页面上,效果很好。

sio = cStringIO.StringIO()
pylab.savefig(sio, format='pdf')
sio.close()

sio =cStringIO.StringIO()
print "Content-type:text/htmlrnrn"
pylab.savefig(sio, format='png', bbox_inches='tight')
print "<html>"
...
print "<img id='Plot' src='data:image/png;base64,%s'/>" % sio.getvalue().encode('base64').strip()
...

有没有办法在下载时以StringIO的形式提供pdf。 我知道有一些HTTP下载头的例子,当文件位于服务器上时。

print "Content-Type:application/download; name="filename"";
print "Content-Disposition: attachment; filename="filename"";
print

f=open("filename", "rb")
str = f.read();
print str
f.close()

所以我想我会需要第二个cgi脚本进行下载。 但我不知道如何通过stringIO来将其下载为pdf,而无需将其保存在服务器上。

感谢帮助


你服务你的PNG的确切方法应该是可行的(如果你的例子已经完成)。 以下是您发送的第二个片段已修改为适合您的示例:

fn = 'mydownload.pdf'
print 'Content-Type:application/pdf';
print 'Content-Disposition: attachment; filename="%s"' %(fn);
print
print sio.getvalue()

如果您使用的是wsgi而不是cgi,则可以直接写入流。

链接地址: http://www.djcxy.com/p/46719.html

上一篇: serve a stringIO (pdf) as download python

下一篇: Installation Issue with matplotlib Python