Laravel图像干预无法读取图像源

时间:2017-07-04 18:24:25

标签: php html image laravel intervention

所以这对我来说已经有一段时间了,而且它似乎无法正常工作,我有一个用户可以提交新的个人资料图片的表单:

<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()

1 个答案:

答案 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 ..)