我正在将项目从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 given
,league\flysystem\src\Util.php
,第250行。
我正在使用"intervention/image": "~2.1"
,"league/flysystem-aws-s3-v3" : "~1.0",
任何可能导致此问题的想法?
答案 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()
。