2015-09-28 17 views
8

Wie erhalte ich den Dateinamen, wenn ich ein Image von einem Remote-Server nehme? Und wie mit Originalgröße und Dateiname speichern?Intervention Bild: Bild direkt von einer URL mit dem ursprünglichen Dateinamen speichern und ext?

// Take remote image 
$img = Image::make('http://image.info/demo.jpg'); 
// how to save in the img/original/demo.jpg 
$img->save(????); 

Ich benutze Intervention, (http://image.intervention.io/api/make) CakePHP 3 Bild Verhalten zu bauen, ich möchte von Remote-Servern eine einfache Hochladen zur Verfügung zu stellen, und halten Sie das Originalbild als Quelle für zukünftige Manipulation.

EDIT

frage ich, gibt es die Intervention Bild Methode, die den Namen der Datei zurückgibt, wenn sie von dem Remote-Server genommen. Ich kenne PHP-Kopie(), ich kann auch die CakePHP-Datei-Dienstprogramme verwenden, aber es gibt mir die doppelte Anfrage auf Remote-Datei.

+0

möglich Duplikat [Kopieren Bild von Remote-Server über HTTP] arbeiten (http://stackoverflow.com/questions/909374/copy-image-from-remote-server-over-http) – user3158900

+0

Nein ist nicht dupliziert. – Salines

Antwort

15

response() gibt nicht den ursprünglichen Dateinamen zurück, wie Salines angefordert hat. Dies sollte

$path = 'https://i.stack.imgur.com/koFpQ.png'; 
$filename = basename($path); 

Image::make($path)->save(public_path('images/' . $filename)); 
3

Sie können es einfach mit make(); und Antwort(); Methoden. Überprüfen Sie meinen Code unten.

Denken Sie daran, dass allow_url_fopen aktiviert sein muss, um ein Remote-Image abzurufen.

Dies wird mein Profilbild anzeigen. Wenn Sie es nicht mit Laravel Framework verwenden, ersetzen Sie einfach return mit echo.

$img = Image::make('https://i.stack.imgur.com/koFpQ.png'); 
header('Content-Type: image/png'); 
return $img->response(); 

Hoffnung, die hilft und upvote meine Antwort, wenn nützlich;)

Wenn Sie weitere Hilfe benötigen einfach fragen.

+0

Ich mag es, keine Notwendigkeit, auf dem Server vorübergehend zu speichern. Aber ich habe eine Frage. Gibt es eine Möglichkeit, es für Dateien im Allgemeinen arbeiten zu lassen? Zum Beispiel kann mein Benutzer entweder ein Foto oder ein PDF-Dokument hochladen ... wie würde ich damit umgehen? –