2015-08-14 14 views
6

Mam swój projekt Laravel, który będzie zapisywać pliki (txt lub csv) po wykonaniu pewnych obliczeń.Skąd zapisać pliki w strukturze folderów Laravel 5?

Zajmuję się sprawdzoną procedurą dotyczącą zapisywania tych plików. Może/resources/csv/...?

Drugie pytanie, w jaki sposób byłoby najlepszym sposobem odniesienia się do tej ścieżki z poziomu klas? Ustawianie ścieżki abs w pliku .env? Czy istnieje metoda laravel, która zwróci ścieżkę do zasobów?

Odpowiedz

17

/resources nie są najlepszym miejscem, ponieważ ten folder jest używany do plików źródłowych i zwykle jest przechowywany w repozytorium kodu źródłowego (np. git).

Pliki, które generuje aplikacja, zwykle znajdują się w folderze/storage - wystarczy utworzyć tam folder /storage/csv.

Powinieneś nigdy nie odwoływać się do tych plików bezpośrednio ze swoich klas. Systemy plików Laravel są tym, czego potrzebujesz - możesz przeczytać więcej na ich temat tutaj: http://laravel.com/docs/master/filesystem. Sprawiają, że operacje na plikach (np. czytają, piszą, dodają, dodają, usuwają, przenoszą, wszystkie pliki i wiele innych ...) są znacznie prostsze.

start z definiowaniem systemów plików w config/filesystems.php

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

Teraz można odczytu/zapisu plików csv poprzez Storage fasadę z dowolnego miejsca w kodzie tak:

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

Obecnie potrzebuję utworzyć plik, a następnie użyć go w tym samym wykonaniu. Nie mieć "stałego" odniesienia do pliku. W każdym razie oferowane przez ciebie rozwiązanie jest niesamowite. Dzięki – koalaok

+0

Jeśli mam wiele podkatalogów w folderze csv. Co sugerujesz zrobić, aby uzyskać do nich bezpośredni dostęp? Lepiej zdefiniować bardziej szczegółowe wpisy w config/filesystems.php? lub skandowanie jak Storage :: disk ('csv'). "/ mysubdir /../" (nie wiem jeszcze jak to poprawnie napisać). – koalaok

+1

Dołącza folder do nazwy pliku przekazywanej przez użytkownika put/get, np. -> put ('folder/file.csv', $ content). –

3

Możesz zapisać pliki w folderze przechowywania.

Na przykład:

Można utworzyć folder o nazwie CSV w folderze przechowywania i uzyskać ścieżkę następująco:

storage_path().'/csv'; 

można znaleźć folderu przechowywania w

laravel 4.2: app> storage
Laravel 5+: w katalogu głównym

+0

Pliki w ścieżce storage_path() nie są przeznaczone do bezpośredniego dostępu. Do tego celu powinny zostać użyte systemy plików Laravel - http://laravel.com/docs/master/filesystem –