【问题标题】:NotReadableException in Decoder.php line 20: Unable to read image from file (). laravel 5.3Decoder.php 第 20 行中的 NotReadableException:无法从文件 () 中读取图像。拉拉维尔 5.3
【发布时间】:2025-12-03 15:05:02
【问题描述】:

我正在尝试在 Laravel 5.3 中上传图片,但在 Decoder.php 第 20 行出现 NotReadableException:

无法从文件()中读取图像。

错误。任何人都可以帮助我。我正在使用图像干预 图片上传。

在我尝试过的代码下方:

public function update(Request $request){

        // Handle the user upload of avatar
        if($request->hasFile('avatar')){
            $avatar = $request->file('avatar');
            $filename = time() . '.' . $avatar->getClientOriginalExtension();
            Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename ) );

            $user = Auth::user();
            $user->avatar = $filename;
            $user->save();

        }

        return view('users/profile', array('user' => Auth::user()) );

    }

【问题讨论】:

  • $request->file('avatar') 返回UploadedFile 的实例。请改用Image::make($avatar)->path()
  • 你能指定你要上传的文件的大小吗?
  • 无效同样的错误:(
  • 尝试dd($request->get('avatar')); 看看它返回了什么?
  • 大小为 951 Kb .....

标签: php image laravel file-upload upload


【解决方案1】:

这是可能的解决方案

 public function update(Request $request){

    // Handle the user upload of avatar
    if($request->hasFile('avatar')){
        $avatar = $request->file('avatar');
        $filename = time() . '.' . $avatar->getClientOriginalExtension();
        Image::make($avatar->path())->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename ) );

        $user = Auth::user();
        $user->avatar = $filename;
        $user->save();

    }

    return view('users/profile', array('user' => Auth::user()) );

}

由于 Request 的文件被放置在 temp 目录中,您需要获取该文件的 path() 以将其传递到 Image::make

【讨论】:

  • 但现在我在 AbstractDecoder.php 第 302 行收到 NotReadableException:图像源不可读错误
  • 检查你的 php 安装是否启用了 gd 扩展或 imagick 扩展。默认情况下它使用 gd 扩展。
最近更新 更多