2015-08-14 14 views
6

Ich habe mein Laravel-Projekt, das nach einigen Berechnungen Dateien (txt oder csv) speichert.Wo kann man Dateien in Laravel 5 Ordnerstruktur speichern?

Ich suche nach einer Best Practice, wo diese Dateien gespeichert werden. Vielleicht/resources/csv/...?

Zweite Frage, wie wäre es die beste Möglichkeit, diesen Weg aus den Klassen zu verweisen? Den ABS-Pfad in der .env-Datei einrichten? Gibt es eine Laravel-Methode, die den Pfad zu Ressourcen zurückgibt?

Antwort

17

/resources sind nicht der beste Ort, da dieser Ordner für Quelldateien verwendet wird und normalerweise im Quellcode-Repository gespeichert wird (z. Git).

Dateien, die Anwendung generiert in der Regel irgendwo im/Storage-Ordner landen - erstellen Sie einfach einen Ordner /storage/csv dort.

Sie sollten diese Dateien nie direkt aus Ihren Klassen verweisen. Laravels Dateisysteme sind das, was Sie brauchen - Sie können hier mehr darüber lesen: http://laravel.com/docs/master/filesystem. Sie machen Operationen auf den Dateien (wie lesen, schreiben, vorhängen, anhängen, löschen, verschieben, erhalten alle Dateien und viele mehr ...) viel einfacher.

beginnt mit einem Dateisystem in Ihrem Config definieren/filesystems.php

'disks' => [ 
    'csv' => [ 
    'driver' => 'local', 
    'root' => storage_path().'/csv', 
    ], 
], 

Jetzt können Sie/Schreiben von Dateien Ihrer csv über Lagerung Fassade von überall in Ihrem Code wie das lesen:

Storage::disk('csv')->put('file.csv', $content); 
$content = Storage::disk('csv')->get('file.csv'); 
+0

Mein aktueller Bedarf besteht darin, die Datei zu erstellen und sie dann in derselben Ausführung zu verwenden. Keine "permanente" Dateireferenz zu haben. Wie auch immer, die Lösung, die Sie zur Verfügung stellen, ist großartig. Danke – koalaok

+0

Wenn ich mehrere Unterordner im csv-Ordner habe. Was schlagen Sie vor, um direkt auf sie zuzugreifen? Bessere spezifische Einträge in config/filesystems.php definieren? oder verkettet wie Storage :: disk ('csv'). "/ mysubdir /../" (weiß noch nicht, wie man das richtig schreibt ..) – koalaok

+1

Fügen Sie den Ordner in den Dateinamen ein, den Sie an put/get übergeben, z. -> put ('Ordner/Datei.csv', $ Inhalt). –

3

Sie können Dateien im Speicherordner speichern.

Zum Beispiel:

Sie können einen Ordner erstellen csv in Speicher Ordner mit dem Namen und den Pfad erhalten wie folgt:

storage_path().'/csv'; 

Sie den Speicherordner in

Laravel finden 4.2: App> Speicher
Laravel 5+: im Stammverzeichnis

+0

Dateien in storage_path() sind nicht für den direkten Zugriff gedacht. Laravels Dateisysteme sollten dafür verwendet werden - http://laravel.com/docs/master/filesystem –