2014-02-17 4 views
5

Ich weiß, wir können jetzt ein Medientyp-Feld auf die python-eve REST-API framework hochladen/veröffentlichen und es wird in mongodb gespeichert werden. Gibt es eine Möglichkeit, die Speicherung dieser Medien zu ändern? Zum Beispiel ein entfernter Speicherserver, z.B. amazon S3? So dass wir nur die URL des Bildes in mongodb anstatt des ganzen Bildes speichern?wie man ein Bild durch Python-eve auf einen externen Speicherserver, z.B. S3?

Antwort

2

Während die standard behaviour auf GridFS zu speichern, können Sie auch Ihre eigene MediaStorage Unterklasse schaffen, die gespeichert werden können, wo immer Sie (Dateisystem, S3, etc.) wollen

So etwas würde den Trick tun:

from eve.io.media import MediaStorage 

class AmazonS3MediaStorage(MediaStorage): 
    """ Your actual implementation """ 
    pass 

app = Eve(media=AmazonS3MediaStorage) 

if __name__ == '__main__': 
    app.run() 

prüft die tatsächliche MediaStorage Klasse für Implementierungsdetails und/oder die tatsächliche GridFSMediaStorage Klasse als Referenz sehen.

+1

@JohnZ wenn Sie mit einem S3 'MediaStorage' Klasse kommen und daran interessiert sind, teilen sie mit mir nehmen Sie bitte Kontakt, könnten wir es in die Eve Repo oder zumindest hinzufügen, eine Verlängerung machen aus ihm heraus . –

+1

in der Tat eine gute Idee! erhalten Sie – John

+0

geschrieben Ich versuche, ein FS Medienspeicher (nur für das Studium) und zwei Dinge hapenning umzusetzen: 1- Die get nach dem immer 2- i Empfang „resourceWarning: unclosed Datei“ bin, setzen aufgerufen wird auf die Schaffung . Soll ich einen Stream oder etwas Ähnliches zurückgeben? – FabioCosta