Php 我的个人资料图片在Laravel 6中未显示
我正在学习创建一些论坛,但当我更新照片配置文件时,它无法显示。当我试图检查元件时,它说: 加载资源失败:服务器响应的状态为404未找到 这是我的控制器:Php 我的个人资料图片在Laravel 6中未显示,php,laravel,laravel-6,profile-picture,Php,Laravel,Laravel 6,Profile Picture,我正在学习创建一些论坛,但当我更新照片配置文件时,它无法显示。当我试图检查元件时,它说: 加载资源失败:服务器响应的状态为404未找到 这是我的控制器: public function update() { $avatar = request()->file('avatar'); $avatar_validate = 'image|mimes:jpeg,png,jpg,svg|max:2048'; request()->validate([
public function update()
{
$avatar = request()->file('avatar');
$avatar_validate = 'image|mimes:jpeg,png,jpg,svg|max:2048';
request()->validate([
'username' => 'required|alpha_num|min:6|max:20|unique:users,username,' . auth()->id(),
'name' => 'string|required',
'avatar' => $avatar ? $avatar_validate : "",
]);
$hash = auth()->user()->hash;
$avatar_name = $avatar->storeAs('profile-picture', "{$hash}.{$avatar->extension()}");
auth()->user()->update([
'username' => request('username'),
'name' => request('name'),
'avatar' => $avatar_name,
]);
return redirect()->route('users.show', auth()->user()->usernameOrHash());
}
试试这个:
$hash = auth()->user()->hash;
$filename = $hash . $avatar->getClientOriginalExtension();
$avatar_name = $avatar->storeAs('profile-picture', $filename);
此外,可能您的个人资料图片目录中存储了一些文件名怪异的垃圾文件您不能使用引号中的函数。{$hash}.{$avatar->extension}不会创建所需的文件名。您必须打破引号并连接。是否有必要包括使用Illumb\Http\UploadedFile;?我在原始代码或你的答案中没有看到它被引用。你是对的,我将编辑我的答案,它肯定已经包含在OP的代码中,否则他会得到另一个异常。他们会得到什么错误?您不需要包含类来引用已经存在的实例$avatar的getClientOriginalExtension之类的函数。只有在创建新实例或访问静态方法(如new UploadedFile或UploadedFile::example)时,您才真正需要这一行。您再一次说得对,Tim先生,根据Laravel手册,它已经是一个文件对象实例。file方法返回Lightlight\Http\UploadedFile类的一个实例,谢谢提醒!哈哈,不用担心:是的,这只是一个旁注;包括它不会真的有任何负面影响,你的答案其余部分似乎是正确的!