【问题标题】:Intervention\Image\Exception\NotSupportedException Encoding format (tmp) is not supported不支持 Intervention\Image\Exception\NotSupportedException 编码格式 (tmp)
【发布时间】:2018-04-27 12:02:40
【问题描述】:

我正在使用带有 Laravel 5.6 的干预包,每当我上传文件时遇到的问题是不支持编码格式(tmp)错误。我也启用了我的 gdd2 扩展。这是我用过的代码。

public function store(Request $request)
    {
        $this->validate($request , [
            'name'          => 'required|unique:categories',
            'description'   =>  'max:355',
            'image'         =>  'required|image|mimes:jpeg,bmp,png,jpg'
        ]);

        // Get Form Image
        $image = $request->file('image');
        $slug = str_slug($request->name);
        if (isset($image))
        {
            $currentDate = Carbon::now()->toDateString();
            $imageName = $slug.'-'.$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
            // Check if Category Dir exists
            if (!Storage::disk('public')->exists('category'))
            {
                Storage::disk('public')->makeDirectory('category');
            }
            // Resize image for category and upload
            $categoryImage = Image::make($image)->resize(1600,479)->save();
            Storage::disk('public')->put('category/'.$imageName, $categoryImage);

            // Check if Category Slider Dir exists
            if (!Storage::disk('public')->exists('category/slider'))
            {
                Storage::disk('public')->makeDirectory('category/slider');
            }

            // Resize image for category slider and upload
            $categorySlider = Image::make($image)->resize(500,333)->save();
            Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);

        }
        else
        {
            $imageName = 'default.png';
        }

        $category = new Category();
        $category->name = $request->name;
        $category->slug = $slug;
        $category->description = $request->description;
        $category->image = $imageName;

        $category->save();
        Toastr::success('Category Saved Successfully','Success');
        return redirect()->route('admin.category.index');
    }

【问题讨论】:

    标签: laravel intervention


    【解决方案1】:

    您不需要在 Intervention\Image 类上使用 save() 函数,因为您通过 Storage Facade 将文件保存到公共磁盘。

    只需替换行

    $categoryImage = Image::make($image)->resize(1600,479)->save();

    $categoryImage = Image::make($image)->resize(1600,479)->stream();

    以避免将图像存储到 .tmp 扩展名下的临时文件夹中。 Laravel Storage Facade 将处理 Intervention\Image 创建的流并将文件存储到公共磁盘。

    【讨论】:

      【解决方案2】:

      干预图像 save() 方法需要一个文件名,因此它知道保存图像的文件格式(jpg、png 等)。

      您收到错误的原因是它不知道将临时图像对象 (tmp) 保存在什么编码中。

      这是一个例子

      ->save('my-image.jpg', 90)
      

      还有一个可选的第二个参数来控制质量输出。以上输出质量为 90%。

      http://image.intervention.io/api/save

      【讨论】:

        【解决方案3】:

        在某处看到这个,它对我有用

        $image->save('foo' . $img->getClientOriginalExtension());
        

        【讨论】:

          【解决方案4】:

          Laravel 干预图像 save() 方法需要一个文件名,因此它知道保存图像的文件格式(jpg、png 等)

           $categoryImage = Image::make($image)->resize(1600,479)->save( $imageName,90);
          

          【讨论】:

            【解决方案5】:

            我已经解决了这个问题

            修剪 我的文件路径,我在 laravel Artisan Console 中使用了这个脚本。

            $img->save(trim('public/uploads/images/thumbnails/'.$subFolder.'/'.$filename));
            

            【讨论】:

              【解决方案6】:

              宁可使用流式传输,也不会出错

              $categoryImage = Image::make($image)->resize(1600,479)->save(); 
              

              【讨论】:

                【解决方案7】:
                1. $categoryImage = Image::make($image)->resize(1600,479)->save(); Storage::disk('public')->put('category/'.$imageName, $categoryImage);

                改成

                Image::make($image)->resize(1600, 479)->save(storage_path('app/public/category').'/'.$imagename);
                
                $categorySlider = Image::make($image)->resize(500,333)->save();
                Storage::disk('public')->put('category/slider/'.$imageName, $categorySlider);
                

                改成

                Image::make($image)->resize(500, 333)->save(storage_path('app/public/category/slider/') .$imagename);
                

                【讨论】:

                  猜你喜欢
                  • 2018-03-13
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-03-12
                  • 2015-05-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多