Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上传文件到Laravel 7中的不同目录_Php_Laravel - Fatal编程技术网

Php 上传文件到Laravel 7中的不同目录

Php 上传文件到Laravel 7中的不同目录,php,laravel,Php,Laravel,我正在使用Laravel7开发一个照片上传。代码如下: public function updateProfilePic(Request $request) { $request->validate([ 'photo' => 'file|image|max:2048', ]); if (auth()->user()->photo != 'storage/default-pfp.png') { $old_photo

我正在使用Laravel7开发一个照片上传。代码如下:

public function updateProfilePic(Request $request)
{
    $request->validate([
        'photo' => 'file|image|max:2048',
    ]);

    if (auth()->user()->photo != 'storage/default-pfp.png') {
        $old_photo = str_replace('storage/', '', auth()->user()->photo);
        try {
            unlink('storage/' . $old_photo);
        } catch (Exception $t) {
            // does nothing
        }
    }

    $path = $request->file('photo')->store('public/profile-pics');
    $res  = $this->user->where('email', auth()->user()->email)->update([
        'photo' => str_replace('public/', 'storage/', $path),
    ]);

    if ($res) {
        return redirect('painel-default');
    } else {
        return redirect('/');
    }
}

这在我的电脑上很好用。上传的文件将进入存储/app/public/profile图片。但是,当这段代码在我同事的计算机上运行时,它会进入存储/app/public/public/profile图片。另外,我的另一位同事也用它在他的电脑上得到了与我相同的结果。然而,不知从何而来,他得到了:存储/应用程序/公共/公共/个人资料图片。我们分别运行不同的php版本7.4.5、7.4.8和7.4.3,但这似乎不是问题。有人能帮我找到为什么会发生这种情况吗?

您已经在使用一个框架来避免重写一大堆内容。为什么不全部使用呢?我在拉威尔是个新手。你的意思是我应该使用这个资产助手来获取文件目录?没错。使用Storage facade的配置和功能。什么是
$this->user
?这不是您问题的答案,但是,看起来您正在使用已加载的用户
auth()->user()
从数据库加载用户。如果是这种情况,那么您只需执行
auth()->user()->update([…])
.Rwd,这就是用户模型。我不知道我能那样做。谢谢。你已经在使用一个框架来避免重写一大堆东西了。为什么不全部使用呢?我在拉威尔是个新手。你的意思是我应该使用这个资产助手来获取文件目录?没错。使用Storage facade的配置和功能。什么是
$this->user
?这不是您问题的答案,但是,看起来您正在使用已加载的用户
auth()->user()
从数据库加载用户。如果是这种情况,那么您只需执行
auth()->user()->update([…])
.Rwd,这就是用户模型。我不知道我能那样做。谢谢