8

プロジェクトを Laravel 5 から 5.1 にアップグレード中です。更新が必要なパッケージの 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 に答える