League / Flysystem fstat()期望参数1是资源,给定对象

时间:2015-06-09 17:06:22

标签: php laravel laravel-5 intervention flysystem

我正在将项目从Laravel 5升级到5.1。需要更新的一个包是League\Flysystem

我正在使用Intervention\Image调整图像大小,然后使用Flysystem将其保存到S3。下面的代码使用5.0 -

// Album ID
$id = $request->input('id');
// Filename for this photo
$filename = str_random() . ".jpg";

// Get the storage disk
$disk = Storage::disk('s3');

// Resize the photo
$image = Image::make($request->file('photo'));
$image->orientate();
$image->resize(1024, 748, function ($constraint) {
            $constraint->aspectRatio();
});
$image->encode('jpg');
// Save the photo to the disk
$disk->put("img/album/$id/$filename", $image);

但是现在我收到以下错误: fstat() expects parameter 1 to be resource, object givenleague\flysystem\src\Util.php,第250行。

我正在使用"intervention/image": "~2.1""league/flysystem-aws-s3-v3" : "~1.0",

任何可能导致此问题的想法?

3 个答案:

答案 0 :(得分:16)

更好的方法是输入编码输出:

https://docs.python.org/2/library/functions.html#float

$image->encode('jpg');
$disk->put("img/album/$id/$filename", (string) $image);

答案 1 :(得分:11)

你可能很幸运,在$image对象上的某些类型转换中有一个字符串,我想你的最后一行简单改变为

$disk->put("img/album/$id/$filename", $image->__toString());

将解决问题并且更安全,因为put方法正式只接受字符串(并将php资源的实现视为wekk)。
从长远来看,这应该让你与变化兼容。

答案 2 :(得分:0)

我有"intervention/image": "^2.4",

__toString()对我不起作用,该文件已损坏... 我做了->stream()->getContents()