2010-12-02 22 views

Répondre

2

Je l'utilise pour gérer des fichiers swf stockés dans des blobs. Vous devriez facilement pouvoir le modifier en fonction de vos besoins et du type de fichiers.

class SwfHandler(webapp.RequestHandler): 
def get(self): 
    query = cgi.FieldStorage() 
    swf = BlobStorage.get_by_id(int(query.getvalue('id'))) 

    if swf: 
     self.response.headers['Content-Type'] = 'application/x-shockwave-flash' 
     self.response.out.write(swf.fileData) 
    else: 
     self.error(404) 

## add "('/swfhandler/', SwfHandler)" to your application : 
application = webapp.WSGIApplication([('/swfhandler/', SwfHandler), ****) 

Je demande au fichier:/swfhandler/id = 12

0

À moins de manquer quelque chose, il devrait être aussi simple que de sortir les en-têtes appropriés avant de sortir le contenu d'entrée que vous avez récupéré.

3

Vous devez définir votre propre gestionnaire, qui prend la clé comme partie de l'URL ou une chaîne de requête, et renvoie l'objet approprié à partir de memcache. Rappelez-vous que memcache est destiné à être un cache, pas un mécanisme de stockage fiable, vous devriez donc avoir un moyen de récupérer un objet même s'il a été expulsé du cache.

+0

L'application est utilisée pour générer la clé et paires de clés secret est mis dans le memcache avec un temps de vivre d'env. 1 minute. Je veux que les données soient effacées automatiquement après un certain temps. Une fois la paire de clés créée, l'utilisateur est déplacé vers une page qui affiche la clé secrète et je souhaite avoir un lien où je peux le télécharger en un seul clic. – Neverland

+1

Parce que memcache est un cache, les données pourraient être expulsées avant que l'utilisateur n'y accède. Le temps de vivre est une limite supérieure, pas une restriction. –