2015-06-09 9 views
5

Ich bin dabei, ein Projekt von Laravel 5 auf 5.1 zu aktualisieren. Ein Paket, das aktualisiert werden musste, war League\Flysystem.Liga/Flysystem fstat() erwartet Parameter 1 als Ressource, Objekt gegeben

Ich verwende Intervention\Image, um ein Bild zu vergrößern und dann Flysystem, um es in S3 zu speichern. Der folgende Code arbeitet mit 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); 

Aber jetzt erhalte ich folgende Fehlermeldung: fstat() expects parameter 1 to be resource, object given, geworfen in league\flysystem\src\Util.php, Linie 250.

ich "intervention/image": "~2.1" verwende, "league/flysystem-aws-s3-v3" : "~1.0",

Irgendwelche Ideen Was könnte das verursachen?

Antwort

7

Sie könnten vor diesem eine Art Casting auf $ Bildobjekt Glück haben ein String aus ihm gemacht, ich eine einfache chnage Ihrer letzten Zeile erraten zu

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

wird das Problem beheben und ist sicherer Wie auch immer, da die "Put" -Methode offiziell nur Strings akzeptiert (und die Implementation auch php-Ressourcen betrachtet). Das sollte Sie auf lange Sicht kompatibel zu Änderungen halten.

+0

Jetzt Befehl erhalten '(_toString) ist für Fahrer (Gd)' nicht zur Verfügung. – NightMICU

+0

ist das ein Schreibfehler (_toString) oder hatten Sie nur einen Unterstrich? Es sollte __toString() mit zwei Unterstrichen sein. – ChristianM

+0

Du bist großartig, danke! Kannst du erklären, was hier passiert ist? – NightMICU

10

Der bessere Weg, dies zu tun ist, um die codierte Ausgabe zu gieße Typ:

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

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

Ich stimme tatsächlich zu, tun die Typumwandlung wie vorgeschlagen :) – ChristianM