8

我正在将项目从 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);

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

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

有什么想法可能导致这种情况吗?

4

3 回答 3

17

更好的方法是对编码输出进行类型转换:

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

$image->encode('jpg');
$disk->put("img/album/$id/$filename", (string) $image);
于 2015-06-13T16:12:35.907 回答
11

在您的对象上进行某种类型转换之前,您可能已经很幸运$image了,我猜您的最后一行简单地更改为

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

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

于 2015-06-09T17:35:51.470 回答
0

i got version "intervention/image": "^2.4",

The __toString() didn't work for me, the file was created corrupted... i did ->stream()->getContents().

于 2018-12-05T06:41:56.537 回答