2015-07-09 7 views

risposta

14

Si potrebbe creare un altro disco per la Classe di stoccaggio. Questa sarebbe la soluzione migliore per te secondo me.

In config/filesystems.php nell'array di dischi aggiungere la cartella desiderata. La cartella pubblica pubblica in questo caso.

'disks' => [ 

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

    'public' => [ 
     'driver' => 'local', 
     'root' => public_path(), 
    ], 

    's3' => '....' 

Quindi è possibile utilizzare bagagli classe per lavorare all'interno della cartella pubblica nel seguente modo:

$exists = Storage::disk('public')->exists('file.jpg'); 

Il $ esiste variabile vi dirà se File.jpg esiste all'interno del cartella pubblica perché il disco di archiviazione "pubblico" punta alla cartella pubblica del progetto.

È possibile utilizzare tutti i metodi Sessione dalla documentazione, con il disco personalizzato. Basta aggiungere la parte del disco ("pubblica").

Storage::disk('public')-> // any method you want from 

http://laravel.com/docs/5.0/filesystem#basic-usage

+1

Bonus per una soluzione più "laravelish" – kant312

6

Considerare l'utilizzo di glob. Non c'è bisogno di complicare PHP barebone con le classi/metodi di supporto in laravel 5.

<?php 
foreach (glob("/location/for/public/images/*.png") as $filename) { 
    echo "$filename size " . filesize($filename) . "\n"; 
} 
?> 
5

Storage::disk('local')->files('optional_dir_name');

o

array_filter(Storage::disk('local')->files(), function ($item) {return strpos($item, 'png');});

Nota che laravel disco ha files() e allfiles(). allfiles è ricorsivo.