2015-06-09 18 views
5

Sono in procinto di aggiornare un progetto da Laravel 5 a 5.1. Un pacchetto che doveva essere aggiornato era League\Flysystem.League/Flysystem fstat() si aspetta che il parametro 1 sia risorsa, oggetto dato

Sto usando Intervention\Image per ridimensionare un'immagine e poi Flysystem per salvarlo su S3. Il codice qui sotto è stato lavorare con 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); 

Ma ora sto ricevendo il seguente errore: fstat() expects parameter 1 to be resource, object given, gettato in league\flysystem\src\Util.php, linea 250.

Sto usando "intervention/image": "~2.1", "league/flysystem-aws-s3-v3" : "~1.0",

Tutte le idee cosa potrebbe causare questo?

risposta

7

Si potrebbe avere avuto la fortuna prima che un certo tipo di colata sul vostro oggetto $ image preso una stringa di fuori di esso, credo che una semplice chnage della vostra ultima linea di

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

risolverà il problema ed è più sicuro comunque il metodo "put" accetta solo ufficialmente le stringhe (e guarda anche le risorse di php di implmentation). Questo dovrebbe renderti compatibile con le modifiche a lungo termine.

+0

Ora ricevere il comando '(_toString) non è disponibile per il driver (Gd)'. – NightMICU

+0

è un errore di scrittura (_toString) o hai solo un carattere di sottolineatura? Dovrebbe essere __toString() con due underscore. – ChristianM

+0

Sei fantastico, grazie! Puoi spiegare cosa è successo qui? – NightMICU

10

Il modo migliore per farlo è quello di digitare lanciare l'uscita codificata:

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

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

Sono d'accordo, esegui il typecast come suggerito :) – ChristianM

Problemi correlati