Php 上传文件到Laravel 7中的不同目录
我正在使用Laravel7开发一个照片上传。代码如下: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
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,这就是用户模型。我不知道我能那样做。谢谢