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)

J'obtiens cette erreur lorsque j'essaie de le télécharger:

[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'

Même si j'ai essayé le chmod a+r file.pdf Aidez-moi, s'il vous plaît. Je vous remercie!

1
BPm 18 nov. 2011 à 10:57

4 réponses

Meilleure réponse

os.path.dirname(__file__) vous donne le répertoire de l'application.

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

Stockez votre fichier dans BP / dossier dans le dossier principal.

@Nicke, @Jon: GAE permet d'accéder à vos fichiers. "Que la source soit avec vous".

3
Alvin K. 19 nov. 2011 à 09:51

L'utilisateur exécutant AppEngine n'a pas accès en lecture au répertoire. Essayez de modifier le répertoire BP.

Mais même ainsi, cela ne fonctionnera pas une fois que vous aurez déployé votre application. Il n'y a aucune notion de système de fichiers dans App Engine. Puis-je vous suggérer de stocker le fichier dans un blob ou dans le magasin de données. Ou répertoire statique.

2
Jon Nylander 18 nov. 2011 à 07:13

GAE n'a pas accès aux fichiers. Si vous souhaitez servir un fichier, servez-le à partir d'un répertoire statique ou du blobstore.

2
Niklas 18 nov. 2011 à 07:11

Peut également servir des fichiers statiques, n'a pas besoin d'un gestionnaire pour cela

- url: /sampleData\.csv
  static_files: sampleData.txt
  upload: sampleData\.csv
  http_headers:
    Content-Type: text/csv
    Content-Disposition: "attachment; filename=sample.csv"
0
sandeep koduri 9 oct. 2013 à 11:59