提供一个stringIO (pdf)作为下载python



我有一个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而不将其保存在服务器上。

Thanks for help

与您为png提供服务的方式相同(如果您的示例已完成)。下面是您发送的第二个代码片段,修改后适合您的示例:

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

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

最新更新