2012-02-17 3 views
0

De gros fichiers sont stockés sur Google Storage. Je voudrais que les utilisateurs puissent les télécharger uniquement lorsqu'ils sont authentifiés dans mon application GAE. L'utilisateur utiliserait un lien de mon GAE tel que http://myapp.appspot.com/files/hugefile.binAutoriser un utilisateur authentifié à télécharger un gros objet stocké sur Google Storage

Mon premier essai fonctionne pour les fichiers dont les tailles sont < 32mb. En utilisant l'API expérimentale de Google Storage, je pouvais d'abord lire le fichier puis le servir à l'utilisateur. Il a fallu que mon application GAE soit un membre de l'équipe du projet sur lequel Google Storage était activé. Malheureusement, cela ne fonctionne pas pour les fichiers volumineux, et cela augmente la bande passante en téléchargeant d'abord le fichier sur GAE, puis en le diffusant au lecteur.

Est-ce que quelqu'un a une idée sur la façon de réaliser cela?

Répondre

1

Vous pouvez stocker des fichiers jusqu'à 5 Go en taille en utilisant l'API Blobstore: http://code.google.com/appengine/docs/python/blobstore/overview.html

est ici le fil Stackoverflow sur ce point: Upload file bigger than 40MB to Google App Engine?

Une chose à noter, est la lecture blobstore ne peut se faire par incréments de 32 Mo , mais l'API fournit des moyens d'accéder à des parties du fichier pour les lectures: http://code.google.com/appengine/docs/python/blobstore/overview.html#Serving_a_Blob

+0

Désolé, c'est une bonne solution dans la plupart des cas, mais dans mon cas, Google Cloud Storage n'est pas une option. – qdii

+0

Désolé, pas vraiment sûr de ce que vous voulez dire - Google Cloud Storage et Blobstore API semblent être deux choses différentes. – Sologoub

+0

Voici ce que je voulais dire, laissez-moi reformuler :) Vous avez suggéré d'utiliser Blobstore, et je voulais dire que je ne pouvais pas, parce que dans mon cas, je suis obligé de stocker mes fichiers sur Google Cloud Storage :) – qdii

1

FYI dans la prochaine version 1.6.4 d'AppEngine, nous avons ajouté la possibilité de transmettre un nom d'objet de stockage Google au blobstore.send_blob() pour envoyer des fichiers de stockage Google de n'importe quelle taille vous application AppEngine.

Here est l'annonce de pré-lancement pour 1.6.4.

Questions connexes