Подтвердить что ты не робот

Как я могу узнать, существует ли папка, прежде чем создавать ее в laravel?

Мне нужно знать, существует ли папка перед ее созданием, потому что я храню фотографии внутри, и я боюсь, что фотографии будут удалены, если они будут перезаписаны. Код, который я должен создать, выглядит следующим образом

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

как я могу это сделать?

4b9b3361

Ответ 1

Смотрите: file_exists()

Использование:

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

В Laravel:

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

Ответ 2

С помощью Laravel вы можете использовать:

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

Кстати, вы также можете поместить подпапки в качестве аргумента в вспомогательную функцию пути Laravel, как это:

$path = public_path('images/');

Ответ 3

Рекомендуемый способ - использовать

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

}

Смотрите исходный код

Если вы посмотрите на код, он вызывает file_exists()

Ответ 4

Путь -1:

if(!is_dir($backupLoc)) {

    mkdir($backupLoc, 0755, true);
}

Путь -2:

if (!file_exists($backupLoc)) {

    mkdir($backupLoc, 0755, true);
}

Путь -3:

if(!File::exists($backupLoc)) {

    File::makeDirectory($backupLoc, 0755, true, true);
}

Не забудьте использовать команду Illuminate\Support\Facades\File;

Путь -4:

if(!File::exists($backupLoc)) {

    Storage::makeDirectory($backupLoc, 0755, true, true);
}

Таким образом, вы должны сначала поместить конфигурацию в папку конфигурации filesystems.php. [Не рекомендуется, если вы не используете внешние диски]

Ответ 5

Я обычно создаю случайные папки внутри изображений для каждого файла, что помогает немного в шифровании URL-адресов, и, таким образом, публикам будет сложно просмотреть ваши файлы, просто введя URL-адрес в ваш каталог.

// 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();    
            }