所以这对我来说已经有一段时间了,而且它似乎无法正常工作,我有一个用户可以提交新的个人资料图片的表单:
<form enctype="multipart/form-data" action="/profile" method="POST">
<input type="file" name="avatar">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="submit" class="pull-right btn btn-sm btn-primary">
</form>
单击该按钮时,它们将被重定向到控制器,从而激活以下功能:
public function update_avatar(Request $request)
{
$avatar = $request->avatar;
$extension = File::extension($avatar);
$filename = time() . '.' . $extension;
Image::make($avatar)->resize(350, 350)->save( public_path('/uploads/avatars/' . $filename ) );
$user = Sentinel::getUser();
$user->profile->avatar = $filename;
$user->save();
}
但无论我做什么,控制器总是返回消息
(1/1)NotReadableException
图片来源不可读
有谁知道如何解决这个问题?
编辑:我已将我的Image :: make行改为:
$image = Image::make($avatar->getRealPath())->resize(350, 350)->save( public_path('/uploads/avatars/' . $filename ) );
但现在我遇到了一个新错误:
(1/1)FatalErrorException
在字符串
上调用成员函数getRealPath()
答案 0 :(得分:1)
请改为尝试:
Image::make($avatar->getRealPath())->resize(350, 350)->save( public_path('/uploads/avatars/' . $filename ) );
修改强> 使用它,检索你的UploadedFile
$avatar = $request->file('avatar');
编辑#2: 对于扩展使用此代替:
$extension = $avatar->getClientOriginalExtension();
注意:不要忘记仅在验证规则中授权图像文件。
Intead,你可以“硬编码”扩展,干预能够保存&amp;转换为指定的图像格式(jpg,png ..)