2017-05-18 1 views
2

Ich versuche, ein Bild von einer URL mit Intervention zu meinem Speicher zu speichern. HierLaravel 5 Bild von URL speichern

ist das, was ich versuchte, so weit (Versuch 1):

$path = 'http://f2b9x.s87.it/images/1/FR_laura-kithorizontal.gif'; 
$filename = basename($path); 
$image = Image::make($path); 
$store = $image->storeAs('image/'.$filename,'public'); 

Aber ich bekomme diese Fehlermeldung: Command (storeAs) is not available for driver (Gd).

Dann habe ich versucht, diesen (Versuch 2):

Image::make('http://f2b9x.s87.it/images/1/FR_laura-kithorizontal.gif')->save(public_path('/images/saveAsImageName.jpg')); 

Aber ich habe diesen Fehler: Can't write image data to path (C:\xampp\htdocs\app\public\/images/saveAsImageName.jpg)

In Versuch 2, versuchte ich auch das: public_path('\images\saveAsImageName.jpg') nur um sicherzustellen, dass es nicht die Backslashes waren, die das Problem verursachten, aber es gab mir den gleichen Fehler.

Irgendwelche Hilfe?

+1

Funktioniert der Speicherort, den Sie speichern möchten, tatsächlich? Wenn ja, ist es beschreibbar? Kann der Benutzer, der von Ihrem PHP verwendet wird, auch schreibbar sein? Einige Dinge zu überprüfen, um das generische zu lösen "Kann keine Bilddaten schreiben ...". –

Antwort

0

Das Problem war, dass ich nicht die Verzeichnisse erstellt (Danke @ Tim Lewis)

hatte ich es so gelöst:

use File;

File::makeDirectory(public_path('images/kits/'.$microtime), 0775, true);

Der erste Parameter ist der Pfad
Der zweite Parameter ist die Berechtigungen für diesen Ordner
Der dritte para Meter ist normalerweise standardmäßig falsch, aber wenn es wahr ist, erstellt es die Verzeichnisse rekursiv. Das bedeutet, dass zuerst geprüft wird, ob Bilder erstellt wurden, dann Kits und dann (in diesem Fall) ob der Ordner mit dieser Mikrozeit erstellt wird.
Wenn keine existiert, werden alle erstellt.

0

diesen

Image::make('http://f2b9x.s87.it/images/1/FR_laura-kithorizontal.gif')->save(public_path('images/saveAsImageName.jpg')); 

Hinweis Versuchen Sie, dass ich Ihren ersten Schrägstrich ausgelassen ("/") in der public_path() Funktion.