2015-08-14 12 views
6

Ho il mio progetto Laravel che salverà i file (txt o csv) dopo aver fatto alcuni calcoli.Dove salvare i file nella struttura della cartella Laravel 5?

Mi sto occupando di una procedura ottimale su dove salvare questi file. Forse/risorse/csv/...?

Seconda domanda come sarebbe il modo migliore per fare riferimento a questo percorso all'interno delle classi? Configurare il percorso abs nel file .env? Esiste un metodo laravel che restituirà il percorso alle risorse?

risposta

17

/risorse non sono il posto migliore, in quanto questa cartella viene utilizzata per i file di origine e viene solitamente archiviata nel repository del codice sorgente (ad es. idiota).

I file che l'applicazione genera di solito finiscono da qualche parte nella cartella/storage - basta creare una cartella /storage/csv lì.

Non dovresti mai fare riferimento a quei file direttamente dalle tue classi. I filesystem di Laravel sono ciò di cui hai bisogno: puoi leggere di più su di loro qui: http://laravel.com/docs/master/filesystem. Fanno operazioni sui file (come leggere, scrivere, anteporre, aggiungere, eliminare, spostare, ottenere tutti i file e molti altri ...) molto più semplice.

Inizia con la definizione di un file system in config/filesystems.php

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

Ora è possibile leggere/scrivere i file csv tramite bagagli facciata da qualsiasi punto del codice del genere:

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

La mia attuale necessità è quella di creare il file e poi usarlo sulla stessa esecuzione. Non avere un riferimento di file "permanente". Ad ogni modo la soluzione che offri è fantastica. Grazie – koalaok

+0

Se ho più sottodirectory nella cartella csv. Cosa suggerisci di fare per accedervi direttamente? Meglio definire voci più specifiche in config/filesystems.php? o concatenando come Storage :: disk ('csv'). "/ mysubdir /../" (non so ancora come scriverlo correttamente ..) – koalaok

+1

Includi la cartella nel nome del file che passi a put/get, ad es. -> put ('cartella/file.csv', $ contenuto). –

3

È possibile salvare i file nella cartella di archiviazione.

Ad esempio:

È possibile creare una cartella denominata csv nella cartella di archiviazione e ottenere il percorso come segue:

storage_path().'/csv'; 

È possibile trovare la cartella di archiviazione in

laravel 4.2: app> storage
Laravel 5+: nella directory radice

+0

I file in percorso_scatenamento() non sono pensati per l'accesso diretto. I filesystem di Laravel dovrebbero essere usati per questo - http://laravel.com/docs/master/filesystem –