如何在 GAE 和 Webapp2 中以编程方式将 pdf 作为下载提供?
How to serve a pdf as a download programmatically in GAE and Webapp2?
我是一个使用 GAE 的新手,我束手无策。
我有一个显示表单的网页,该表单在提交时(使用 angularjs $http)应该会向用户提供 pdf 文件供其下载。 pdf在我用appcfg上传到GAE的文件夹根目录下,目前浏览mydomain/mypdf.pdf可以看到。
我处理返回 pdf 的代码在这里:
import os
import webapp2
class ServePDF(webapp2.RequestHandler):
def post(self):
q = 'mypdf.pdf'
self.response.headers['Content-Type'] = 'application/octet-stream'
self.response.headers['Content-Disposition'] = 'attachment; filename="%s"' % q
self.response.out.write (open(os.path.dirname(__file__) + '/' + q).read())
app = webapp2.WSGIApplication([
('/servepdf', ServePDF)
], debug=True)
我的 app.yaml 看起来像这样:
application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css))
static_files:
upload: (.*\.(gif|png|jpg|ico|js|css))
- url: /mypdf.pdf
static_files: mypdf.pdf
upload: mypdf.pdf
- url: /robots.txt
static_files: robots.txt
upload: robots.txt
- url: .*
script: main.app
libraries:
- name: webapp2
version: latest
我看到的是,由于 500(内部服务器错误),pdf 从未出现,Google 开发人员控制台给了我这样的响应:
File "/base/data/home/apps/myapp/1.382205997234590276/main.py", line 9, in post
self.response.out.write (open(os.path.dirname(__file__) + '/' + q).read())
IOError: [Errno 2] No such file or directory: '/base/data/home/apps/myapp/1.382205997234590276/mypdf.pdf'
也许我的app.yaml有问题?感谢您的帮助。
您的 mypdf.pdf 未设置为应用程序可读。您可以在 app.yaml
- url: /mypdf.pdf
static_files: mypdf.pdf
upload: mypdf.pdf
application_readable: true
我是一个使用 GAE 的新手,我束手无策。
我有一个显示表单的网页,该表单在提交时(使用 angularjs $http)应该会向用户提供 pdf 文件供其下载。 pdf在我用appcfg上传到GAE的文件夹根目录下,目前浏览mydomain/mypdf.pdf可以看到。
我处理返回 pdf 的代码在这里:
import os
import webapp2
class ServePDF(webapp2.RequestHandler):
def post(self):
q = 'mypdf.pdf'
self.response.headers['Content-Type'] = 'application/octet-stream'
self.response.headers['Content-Disposition'] = 'attachment; filename="%s"' % q
self.response.out.write (open(os.path.dirname(__file__) + '/' + q).read())
app = webapp2.WSGIApplication([
('/servepdf', ServePDF)
], debug=True)
我的 app.yaml 看起来像这样:
application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /(.*\.(gif|png|jpg|ico|js|css))
static_files:
upload: (.*\.(gif|png|jpg|ico|js|css))
- url: /mypdf.pdf
static_files: mypdf.pdf
upload: mypdf.pdf
- url: /robots.txt
static_files: robots.txt
upload: robots.txt
- url: .*
script: main.app
libraries:
- name: webapp2
version: latest
我看到的是,由于 500(内部服务器错误),pdf 从未出现,Google 开发人员控制台给了我这样的响应:
File "/base/data/home/apps/myapp/1.382205997234590276/main.py", line 9, in post
self.response.out.write (open(os.path.dirname(__file__) + '/' + q).read())
IOError: [Errno 2] No such file or directory: '/base/data/home/apps/myapp/1.382205997234590276/mypdf.pdf'
也许我的app.yaml有问题?感谢您的帮助。
您的 mypdf.pdf 未设置为应用程序可读。您可以在 app.yaml
- url: /mypdf.pdf
static_files: mypdf.pdf
upload: mypdf.pdf
application_readable: true