2016-05-10 3 views

Antwort

13

Try this:

// To check if File exists in Laravel 5.1 
$exists = Storage::disk('local')->has('file.jpg'); 

// To check if File exists in Laravel 5.2 
$exists = Storage::disk('local')->exists('file.jpg'); 
+2

reden über ein Verzeichnis, nicht Datei. – Chriz74

+2

@ Chriz74 Die 'exists'-Funktion funktioniert gut für Verzeichnisse, so dass' -> exists ('dirname'); 'funktioniert. – DisgruntledGoat

+1

Verzeichnisse sind nur Dateien, die Dateien enthalten. –

6

Wenn Sie ein Verzeichnis überprüfen möchten, versuchen Sie dies:

if (Storage::directories($directory)->has('someDirectory')) { 
    .... 

https://laravel.com/docs/5.1/filesystem#directories

https://laravel.com/docs/5.1/collections#method-has

+0

Ich denke 'exists' funktioniert nur mit Laravel 5.2. Ist es nicht? – prava

+0

Nein, es funktioniert seit 5.0 (nicht sicher über Laravel 4 though): https://laravel.com/docs/5.0/filesystem#basic-usage –

+0

Aber wie 'https://laravel.com/docs/5.1/filesystem', kann die Methode 'has' verwendet werden, um festzustellen, ob eine bestimmte Datei auf dem Datenträger vorhanden ist. – prava

-1

Sie alle Verzeichnisse abrufen Überprüfen Sie als Array, ob das Verzeichnis (Pfad) da ist.

$dir = 'dir/path'; 
$existingDirs = Storage::disk(env('FILE_SYSTEM'))->allDirectories(); 
if (!in_array($dir, $existingDirs)) { 
    // dir doesn't exist so create it 
} 
+0

Ironischerweise ist dies der einzige, der die gestellte Frage tatsächlich beantwortet, obwohl es kein effizienter Weg ist, dies zu tun. – Jason

2

$ existiert = Speicher :: Disk ('local') -> hat ('dirname');

1

in Laravel 5.4 $ exists = Speicher :: Festplatte ('public') -> exists ('images/test_image.jpg'); - mit 'public', die

'public' => [ 
    'driver' => 'local', 
    'root' => public_path(), 
    'url' => env('APP_URL').'/public', 
    'visibility' => 'public', 
], 

'images/test_image.jpg' ist der Pfad des Bildes in filesystem.php Config wurde.

0

Es gibt zwei Dinge zu überprüfen: (1) dass der Pfad existiert, und (2) dass der Pfad ein Verzeichnis ist.

Dies wird den Pfad überprüfen existiert (Syntax für Laravel 5.2+), egal ob es sich um eine Datei oder ein Verzeichnis ist:

Storage::exists('your-path') // bool 

Sobald Sie es existiert wissen, wird dies den Weg bestätigen ist ein Verzeichnis :

Storage::getMetadata('your-path')['type'] === 'dir' 

die zugrunde liegende Flysystem Bibliothek cachen, was es kann, wenn das Dateisystem Inspektion (die lokal oder entfernt sein können), so unter normalen Umständen diese beiden Funktionen nur einen Anruf auf das Dateisystem machen.

0

Wenn Sie überprüfen möchten, ob ein Verzeichnis existiert und eines erstellen, falls es nicht existiert, wird dieser Code für Sie funktionieren.

if(!Storage::exists('/path/to/your/directory')) { 

    Storage::makeDirectory('/path/to/create/your/directory', 0775, true); //creates directory 

} 
Verwandte Themen