提供 stringIO (pdf) 作为下载 python
serve a stringIO (pdf) as download 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/html\r\n\r\n"
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 下载 headers 的示例。
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-script 来下载。
但是我不知道如何传递 stringIO 使其可以下载为 pdf 而不将其保存在服务器上。
感谢帮助
与您提供 png 的方式完全相同(如果您的示例完整)。这是您发送的第二个片段,经过修改以适合您的示例:
fn = 'mydownload.pdf'
print 'Content-Type:application/pdf';
print 'Content-Disposition: attachment; filename="%s"' %(fn);
print
print sio.getvalue()
如果您使用 wsgi 而不是 cgi,您可以直接写入流。
我有一个 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/html\r\n\r\n"
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 下载 headers 的示例。
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-script 来下载。 但是我不知道如何传递 stringIO 使其可以下载为 pdf 而不将其保存在服务器上。
感谢帮助
与您提供 png 的方式完全相同(如果您的示例完整)。这是您发送的第二个片段,经过修改以适合您的示例:
fn = 'mydownload.pdf'
print 'Content-Type:application/pdf';
print 'Content-Disposition: attachment; filename="%s"' %(fn);
print
print sio.getvalue()
如果您使用 wsgi 而不是 cgi,您可以直接写入流。