J'ai besoin de savoir si un dossier existe avant de le créer, c'est parce que je stocke des photos à l'intérieur et je crains que les photos soient supprimées si elles écrasent le dossier. Le code que je dois créer un dossier est le suivant
$path = public_path().'/images';
File::makeDirectory($path, $mode = 0777, true, true);
comment puis-je le faire?
Voir: file_exists ()
Usage:
if (!file_exists($path)) {
// path does not exist
}
À Laravel:
if(!File::exists($path)) {
// path does not exist
}
Avec Laravel vous pouvez utiliser:
$path = public_path().'/images';
File::isDirectory($path) or File::makeDirectory($path, 0777, true, true);
Soit dit en passant, vous pouvez également mettre des sous-dossiers en argument dans une fonction d'assistance de chemin Laravel, comme ceci:
$path = public_path('images/');
La manière recommandée est d'utiliser
if (!File::exists($path))
{
}
Voir le code source
Si vous regardez le code, il appelle file_exists()
Voie -1:
if(!is_dir($backupLoc)) {
mkdir($backupLoc, 0755, true);
}
Voie -2:
if (!file_exists($backupLoc)) {
mkdir($backupLoc, 0755, true);
}
Voie -3:
if(!File::exists($backupLoc)) {
File::makeDirectory($backupLoc, 0755, true, true);
}
N'oubliez pas d'utiliser Illuminate\Support\Facades\File;
Voie -4:
if(!File::exists($backupLoc)) {
Storage::makeDirectory($backupLoc, 0755, true, true);
}
De cette façon, vous devez d'abord mettre la configuration dans le dossier config filesystems.php. [Non recommandé sauf si vous utilisez des disques externes]
Je crée normalement des dossiers aléatoires à l'intérieur des images pour chaque fichier, cela aide un peu au cryptage des URL et donc le public aura du mal à voir vos fichiers en tapant simplement l'URL dans votre répertoire.
// 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();
}