【问题标题】:Can't write image data to path. Intervention Image Laravel 5.2无法将图像数据写入路径。干预图像 Laravel 5.2
【发布时间】:2017-01-25 11:36:18
【问题描述】:
   public function newItem(Request $request){

        $image = $request->file('image');
        $img = time().'.'.$image->getClientOriginalExtension();
        $watermark = Image::make('images/watermark.png');
        $destinationPath = public_path('/products');
        $img = Image::make($image->getRealPath());
        $img->resize(300, 365, function ($constraint) {
            $constraint->aspectRatio();
        })->insert($watermark, 'center');
        File::exists($destinationPath) or File::makeDirectory($destinationPath);
        $img->save($destinationPath.'/'.$img);

}

我不断收到无法将图像数据写入路径 谁能弄清楚我做错了什么? 该问题可能看起来重复,但类似问题中的其他建议对我不起作用。

提前致谢

【问题讨论】:

  • 你能发布你的错误堆栈吗?
  • 权限是否正确?
  • @RolfPedroErnst 权限正确。

标签: php laravel file-upload laravel-5.2 intervention


【解决方案1】:

如果有人使用文件外观:

    File::exists($destinationPath) or File::makeDirectory($destinationPath);

您必须记住,如果您的 $destinationPath 包含超过 1 个文件夹,您必须设置第二个和第三个参数,例如 $mode$recursive 来创建最终目标文件夹并为文件上传准备目录。

例子:

    File::exists($imagePath) or File::makeDirectory($imagePath, 777, true);

【讨论】:

    【解决方案2】:

    确保在 laravel 公共文件夹中创建提到的路径文件夹(通过图像保存传递)。这将自动运行。

    【讨论】:

      【解决方案3】:

      为了其他可能有同样问题的人。我就是这样解决的:

       $image = $request->file('image');
          $img = time().'.'.$image->getClientOriginalExtension();
      
      $watermark = Image::make('images/watermark.png');
      $destinationPath = public_path('/products');
      Image::make($image->getRealPath())->resize(300, 365, function ($constraint) {
          $constraint->aspectRatio();
      })->insert($watermark, 'center')->save($destinationPath.'/'.$img);
      

      我犯的错误是将 Image::make() 分配给一个变量。您可以在此处查看我的代码以及在我的问题中查看上面的代码。

      【讨论】:

        【解决方案4】:

        试试这个对我有用的代码

        public function newItem(){
        
            $image = Input::file('image');
            $destinationPath = '/products';
            $img = time().'.'.$image->getClientOriginalExtension();
            $watermark = Image::make('images/watermark.png');
            $img = Image::make($image->getRealPath());
            $img->resize(300, 365, function ($constraint) {
                $constraint->aspectRatio();
            })->insert($watermark, 'center');
            File::exists($destinationPath) or File::makeDirectory($destinationPath);
            $img->save($destinationPath.'/'.$img);
        }
        

        【讨论】:

        • 我使用的是 5.2,不再支持 Input 类。
        • 它仍然受支持我也有一个由 5.2 编写的项目,它对我有用
        • 不确定Input 是否适用于 5.2,但问题在于干预图像。使用 Laravel 内置文件上传效果很好。 $request->file('image')->move($destinationPath, $img);
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        • 2016-01-15
        • 2016-07-24
        • 1970-01-01
        • 2014-10-19
        • 2015-09-23
        • 2021-08-31
        相关资源
        最近更新 更多