Hoe controleer je of een map bestaat voordat je deze in laravel aanmaakt?

Ik moet weten of een map bestaat voordat ik deze maak, dit komt omdat ik er afbeeldingen in bewaar en ik vrees dat de afbeeldingen worden verwijderd als de map wordt overschreven.
De code die ik heb om een ​​map aan te maken is als volgt

$path = public_path().'/images';
File::makeDirectory($path, $mode = 0777, true, true);

hoe kan ik dat doen?


Antwoord 1, autoriteit 100%

Zie: file_exists()

Gebruik:

if (!file_exists($path)) {
    // path does not exist
}

In Laravel:

if(!File::exists($path)) {
    // path does not exist
}

Opmerking: In Laravel $pathstart u vanuit de map public, dus als u de map 'public/assets'wilt controleren, moet u de $path= 'assets'


Antwoord 2, autoriteit 51%

Met Laravel kun je het volgende gebruiken:

$path = public_path().'/images';
File::isDirectory($path) or File::makeDirectory($path, 0777, true, true);

Trouwens, je kunt ook submappen als argument in een Laravel-padhelperfunctie plaatsen, net als volgt:

$path = public_path('images/');

Antwoord 3, autoriteit 13%

Je kunt deze methode van Bestand gevel ook aanroepen:

File::ensureDirectoryExists('/path/to/your/folder')

die een map aanmaakt als deze niet bestaat en als deze wel bestaat, doet niets


Antwoord 4, autoriteit 8%

Manier -1 :

if(!is_dir($backupLoc)) {
    mkdir($backupLoc, 0755, true);
}

Manier -2 :

if (!file_exists($backupLoc)) {
    mkdir($backupLoc, 0755, true);
}

Manier -3 :

if(!File::exists($backupLoc)) {
    File::makeDirectory($backupLoc, 0755, true, true);
}

Vergeet niet om Illuminate\Support\Facades\File te gebruiken;

Manier -4 :

if(!File::exists($backupLoc)) {
    Storage::makeDirectory($backupLoc, 0755, true, true);
}

Op deze manier moet je eerst de configuratie in de config map zetten
bestandssystemen.php . [Niet aanbevolen, tenzij u externe schijven gebruikt]


Antwoord 5, autoriteit 6%

De aanbevolen manier is om

. te gebruiken

if (!File::exists($path))
{
}

Zie de broncode

Als je naar de code kijkt, roept deze file_exists()

aan


Antwoord 6, autoriteit 6%

In Laravel 5.x/6 kun je het doen met Storage Facade:

use Illuminate\Support\Facades\Storage;
$path = "path/to/folder/";
if(!Storage::exists($path)){
    Storage::makeDirectory($path);
}

Antwoord 7

Normaal maak ik willekeurige mappen in de afbeeldingen voor elk bestand, dit helpt een beetje bij het versleutelen van url’s en dus zal het publiek het moeilijker vinden om uw bestanden te bekijken door simpelweg de url naar uw directory te typen.

// Check if Logo is uploaded and file in random folder name -  
if (Input::hasFile('whatever_logo'))
            {
                $destinationPath = 'uploads/images/' .str_random(8).'/';
                $file = Input::file('whatever_logo');
                $filename = $file->getClientOriginalName();                
                $file->move($destinationPath, $filename);
                $savedPath = $destinationPath . $filename;
                $this->whatever->logo = $savedPath;
                $this->whatever->save();
            }
            // otherwise NULL the logo field in DB table.
            else 
            {
                $this->whatever->logo = NULL;    
                $this->whatever->save();    
            }            

Other episodes