簡體   English   中英

google appengine-讓用戶下載文件

[英]google appengine - let user download a file

class PDF(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = "application/txt"
        self.response.headers['Content-Disposition'] = "attachment; filename=file.pdf"
        f = open('/Users/BP/file.pdf', 'r')
        self.response.out.write(f.read())
def main():
    application = webapp.WSGIApplication([('/download', PDF)],
                                        debug=False)
    util.run_wsgi_app(application)

嘗試下載時出現此錯誤:

[Errno 13] Permission denied: '/Users/BP/file.pdf'
Traceback (most recent call last):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/s~projectname/1.354763951774324185/main.py", line 43, in get
    f = open('/Users/BP/file.pdf', 'r')
IOError: [Errno 13] Permission denied: '/Users/BP/file.pdf'

即使我嘗試了chmod a+r file.pdf請幫助。 謝謝!

os.path.dirname(__file__)提供了應用程序目錄。

f = open(os.path.dirname(__file__) + /'BP/file.pdf', r)

將文件存儲在主文件夾內的BP /文件夾中。

@ Nicke,@ Jon:GAE允許訪問您的文件。 “願消息來源與您同在”。

GAE無權訪問文件。 如果要提供文件,請從靜態目錄或blobstore提供文件。

運行AppEngine的用戶沒有對該目錄的讀取權限。 嘗試更改BP目錄。

但是即使如此,一旦部署應用程序,這將無法正常工作。 App Engine中沒有文件系統的概念。 我可以建議您將文件存儲在Blob還是數據存儲中。 還是靜態目錄。

也可以提供靜態文件,不需要處理程序

- url: /sampleData\.csv
  static_files: sampleData.txt
  upload: sampleData\.csv
  http_headers:
    Content-Type: text/csv
    Content-Disposition: "attachment; filename=sample.csv"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM