在laravel中创建文件夹之前我怎么知道文件夹是否存在?

时间:2014-04-24 21:44:43

标签: php laravel laravel-4

我需要知道在创建文件夹之前是否存在文件夹,这是因为我将图片存储在里面,我担心如果覆盖文件夹会删除图片。 我必须创建一个文件夹的代码如下

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

我该怎么办?

7 个答案:

答案 0 :(得分:54)

请参阅:file_exists()

用法:

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

在Laravel:

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

答案 1 :(得分:17)

使用Laravel,您可以使用:

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

顺便说一句,您也可以将子文件夹作为参数放在Laravel路径助手函数中,如下所示:

$path = public_path('images/');

答案 2 :(得分:3)

推荐的方法是使用

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

}

请参阅source code

如果您查看代码,则会调用file_exists()

答案 3 :(得分:3)

您也可以调用File Facade的此方法:

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

如果不存在则创建一个文件夹,然后不执行任何操作

答案 4 :(得分:1)

方法-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);
}
  

这样,您必须首先将配置放在config文件夹中   filesystems.php。 [除非您使用外部磁盘,否则不建议使用]

答案 5 :(得分:1)

在Laravel 5.x / 6中,您可以使用Storage Facade

use Illuminate\Support\Facades\Storage;

$path = "path/to/folder/";

if(!Storage::exists($path)){
    Storage::makeDirectory($path);
}

答案 6 :(得分:0)

我通常在图像中为每个文件创建随机文件夹,这有助于加密网址,因此公众会发现只需在目录中输入网址就很难查看文件。

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