我已经创建了一个python脚本,它使用reportlab从提供的用户数据生成PDF。 PDF文件下载正常,当我从命令行运行脚本时,一切正常。但是,当我尝试将文件传递给Google App Engine时:
...
outputstream = StringIO.StringIO()
PDF = output.write(outputstream)
class PDFHandler(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'application/pdf'
self.response.headers['Content-Disposition'] = 'attachment; filename=Myfile.pdf'
self.response.headers['Content-Transfer-Encoding'] = 'binary'
self.response.out.write(PDF)
并运行开发服务器,PDF下载,但是当我尝试打开它时,chrome说它无法打开文件,Ubuntu的文档查看器说“无法打开普通/文本文档”,即使我在检查文档的属性,它声明'application / pdf'并且它具有相应的.pdf后缀,当我尝试在GIMP图像查看器中打开它时,它指出“文档已损坏”。我将文件传递给webapp2处理程序的方式有问题吗?任何帮助将不胜感激!
答案 0 :(得分:0)
我通过查看一些旧教程解决了这个问题。这是在代码的最后一行,我忽略了将.getvalue()包含在输出中:
outputstream = StringIO.StringIO()
PDF = output.write(outputstream)
class PDFHandler(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'application/pdf'
self.response.headers['Content-Disposition'] = 'attachment; filename=Myfile.pdf'
self.response.headers['Content-Transfer-Encoding'] = 'binary'
self.response.out.write(PDF.getvalue())