Laravel 5.7 + 干预图像:图像源不可读

Edw*_*ejo 3 laravel laravel-5 intervention laravel-5.7

我创建了一个上传图像以及标题、描述等的应用程序。但是,我在上传某些图像时遇到问题,它返回错误(“图像源不可读”),如下所示:

在此输入图像描述

这是我的代码:

$image = $request->file('image');
// $image = Input::file('image'); // already tried this one still same problem

$orginal_filename = $image->getClientOriginalName();
$ext = $image->getClientOriginalExtension();
$fileName = md5(microtime() . $orginal_filename) . '.' . $ext;

$img = Image::make($image->getRealPath());
$img->stream();
$img->resize(1200, null, function ($constraint) {
    $constraint->aspectRatio();
}); 

Storage::disk('storage_dir')->put($dir . $fileName, $img, 'public');
Run Code Online (Sandbox Code Playgroud)

已经尝试过以下解决方案:

  • 更改为输入::文件('文件')
  • 检查请求内容类型是否具有 multipart/form-data (请求已具有 multipart/form-data Content-Type)
  • 将干预图像驱动程序从“gd”更改为“imagick”

但仍然有“图像源不可读”错误。

注意:错误仅发生在某些图像中。(我还尝试将图像(w/c 产生错误)移动到另一个目录中,但仍然出现错误)。

十分感谢你的帮助!

小智 5

你可以尝试运行我的代码

if ($request->file('photo')->isValid()) {
        $avatar = $request->file('photo');

        $filename = time() . '.' . $avatar->getClientOriginalExtension();

        Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename) );

    }
Run Code Online (Sandbox Code Playgroud)

/uploads/avatars/是我的目录


小智 5

如果问题出现在 Laravel 5.7 项目中,并且您将图片存储在 storage 文件夹中,则在终端中输入以下内容可能会解决问题:

php artisan storage:link
Run Code Online (Sandbox Code Playgroud)

(如果您从 github og bitbucket 克隆了项目,则会出现此问题)