2010-12-02 4 views

Antwort

2

Ich benutze dies um swf-Dateien in Blobs zu behandeln. Sie sollten es leicht ändern können, um es Ihren Bedürfnissen und Dateitypen anzupassen.

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), ****) 

Ich bitte die Datei mit: /? Swfhandler/id = 12

0

Wenn ich etwas nicht verpasse, sollte es so einfach sein, entsprechende Header auszugeben, bevor die von Ihnen abgerufenen Einträge ausgegeben werden.

3

Sie müssen einen eigenen Handler definieren, der den Schlüssel als Teil der URL oder eine Abfragezeichenfolge akzeptiert, und das entsprechende Objekt aus Memcache zurückgibt.

Denken Sie daran, dass Memcache ein Cache sein soll, kein zuverlässiger Speichermechanismus, also sollten Sie eine Möglichkeit haben, ein Objekt abzurufen, auch wenn es aus dem Cache entfernt wurde.

+0

Die Anwendung verwendet wird Schlüsselpaare als auch der geheime Schlüssel wird in die memcache mit einer Zeit ca. leben von setzen zu erzeugen. 1 Minute. Ich möchte, dass die Daten nach einiger Zeit automatisch gelöscht werden. Nachdem das Schlüsselpaar generiert wurde, wird der Benutzer auf eine Seite mit dem geheimen Schlüssel verschoben, und ich möchte einen Link haben, über den ich ihn mit einem einzigen Klick herunterladen kann. – Neverland

+1

Da Memcache ein Cache ist, können die Daten jedoch entfernt werden, bevor der Benutzer darauf zugreift. Die Zeit zu leben ist eine obere Grenze, keine Einschränkung. –

Verwandte Themen