2015-10-17 53 views
0

与此代码,如果文件存在,它会给我错误的Filesystem.php线338Laravel 5文件门面不执行下一个代码if语句假

ErrorException上:mkdir():文件存在

,而不是执行下一个代码,这将插入用户表

..... 
if(!File::exists($path.$data['avatar']->getClientOriginalName())){ 
    File::makeDirectory($path, 0755, true); 
    Image::make($data['avatar']->getRealPath())->resize(200, 200)->save($path.$data['avatar']->getClientOriginalName()); 
    Post::create([ 
      'user_id' => Auth::user()->id, 
      'content' => "assets/uploads".date('/Y/m/d/').$data['avatar']->getClientOriginalName(), 
      'type' => 'image' 
     ]); 
} 
$user = new User; 
$user->username = $data['username']; 
$user->password = Hash::make($data['password']); 
$user->avatar = "assets/uploads".date('/Y/m/d/').$data['avatar']->getClientOriginalName(); 
$user->email = $data['email']; 
$user->first_name = $data['first_name']; 
$user->last_name = $data['last_name']; 
$user->role_id = $data['level']; 
$user->save(); 
.... 

AFAIK上面的代码if语句真或假的应该执行插入,我应该使用else声明?如果是这样,那么我必须重复插入用户两次,这是不好的。

所以,问题是为什么上面的代码返回错误,而不是执行下一个代码?以及如何解决它?

+0

我敢肯定,问题是你在if语句中给出的路径,请仔细检查一次。在某处回应它并检查。你可能会在那里使用一些不需要的路径。 –

+0

@ParthapratimNeog ahhh ..感谢在创建目录之前缺少一些逻辑,请参阅我自己的答案。 –

回答

0

缺少一些逻辑之前创建目录,这里是我的解释

此代码将检查是否路径文件名不存在,那么做一些事情。

!File::exists($path.$data['avatar']->getClientOriginalName() 

并在下面的代码的错误中断。

File::makeDirectory($path, 0755, true); 

问题1

我应该使用else语句?如果是这样,那么我必须重复插入用户 两次,这是不好的。

根本没有,你只是在创建目录之前缺少一些逻辑。

问题2

为什么上面的代码返回错误,而不是执行下面的代码?以及如何 来解决它?

你跟我开玩笑路径文件名不存在并不意味着路径不存在,也可以只是不存在,所以请,如果你的确保路径不存在,则与你的情况不存在创建文件夹,反正但路径是存在的,但你叫File::makeDirectory()那么这就是为什么你会

结束

ErrorException在Filesystem.php线338上:mkdir():文件存在

这里是一个解决方法,同步使用此代码。

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