2014-01-16 8 views
5

Was ist das beste Symfony Dateisystem abstrakte Ebene? Ich muss ein Dateisystem in meinem Symfony-Projekt einrichten, ähnlich wie Dropbox. Ich weiß nicht, wo die Dateien/Medien gespeichert werden oder wie, also das ist, warum ich diese abstrakte Ebene brauche, um sie einzurichten und nicht die Aktualisierung des Dateispeicherorts zu stören.Symfony2 was ist das beste Dateisystem abstact Schicht?

, was ich tun muss:

-adding folders/files 
-moveing folder/files to another lcoation 
-delating folder/files 
-download folder/files 
-upload folder/files 
-editing folder/files 
-editing name of folder/files 

wissen Sie gute Bündel dafür? irgendwelche guten Lösungen für symfony 2? und bitte sagen Sie mir, warum kann diese Lösung gut für meine sein?

Antwort

0

https://github.com/KnpLabs/KnpGaufretteBundle

Gewiß, die meisten in-Tiefe Implementierung umfasst es Dropbox.

+0

aber wie lade ich einige Mediendateien wie Filme oder Bilder hoch? funktioniert das nicht nur für txt-dateien? '$ content = 'Hallo ich bin der neue Inhalt'; $ filesystem-> write ('myFile', $ content); ' – Vardius

+0

Ich habe es nicht persönlich benutzt. Ich weiß nur, dass es die Dateisystemverwaltung abstrahiert. Ich stelle mir vor, dass es egal ist, welche Dateitypen hochgeladen werden. – Flosculus

+0

Ich fand nette Anleitung, wie man ein Bild hochladen tut amazon mit gaufrette: http://braincrafted.com/symfony2-gaufrette-s3/ ich denke, es kann – Vardius

24

Die derzeit verfügbaren Optionen zu sein scheinen:

1) Gaufrette

Um etwas, das Sie es im Speicher müssen übertragen erste Stelle setzen. Dies ist ein Problem, wenn Sie mit großen Dateien umgehen müssen. Gaufrette verfügt über eine Dateiabstraktionsschicht, die es jedoch unmöglich macht, Objekte zwischen Dateisystemen zu verschieben. Einige wesentliche Features fehlen auch, zum Beispiel - ein Verzeichnis entfernen.

Fühlt sich eher wie ein Schlüsselwert-Speicheremulator mit verschiedenen Adaptern an.

2) Filicious

Auf dem Papier scheinen vielversprechend, aber in Wirklichkeit ist es nicht. Die Dokumentation ist alles falsch. Es erwähnt Namespaces, die nicht existieren und Klassen, die nicht gefunden werden. Die meisten Sachen rund um Filicious scheinen derzeit nicht implementiert zu sein. Der einzige funktionierende Adapter ist ab sofort der Lokale. Sie können den Fortschritt auf ihrem website verfolgen.

3) Flysystem

Sieht besser aus als die oben genannten. Hat Stream-Unterstützung. Sie haben auch diesen MountManager, mit dem Sie Dateien zwischen verschiedenen Dateisystemen übertragen können.

Zusammengefasst wäre meine Wahl Flysystem. Sie sollten es besser selbst überprüfen, wenn es Ihren Anforderungen entspricht.

+0

würdest du bitte den mit Speicher in Zusammenhang stehenden ersten Umgang mit Dateien in Gaufrette zitieren? Das beschäftigt mich in einem Projekt, an dem ich gerade arbeite, aber ich kann nirgendwo etwas finden. –

+0

Es ist in der Codebasis. Sie können sehen, dass sie file_get_contents() auf dem lokalen Adapter verwenden, wodurch der binäre Inhalt der Datei abgerufen und in eine Variable eingefügt würde. Wenn diese Datei 5 GB oder so ähnlich wäre, hätten Sie 5 GB Speicherverbrauch durch die Variable. Das gleiche gilt für andere Adapter. Der FTP-Server verwendet beispielsweise stream_get_contents(). Während das Abrufen der gesamten Datei im Speicher für kleine Dateien funktioniert, ist es ein Blocker für große Dateien. Streams sollten stattdessen verwendet werden. –

+0

Diese Seite und dieser Kommentar sollten im Google-Ranking viel höher sein als sie sind. Ich persönlich habe sowohl Gaufrette als auch Flysystem in einigen Projekten verwendet und für alle Informationen, die man im Internet findet, scheint Gaufrette die richtige Wahl zu sein, aber in Wirklichkeit ist es eine Nervensäge. Flysystem mit seinem MountManager macht Dateihandling so, wie es sein sollte – Simon