cURL - Dateien uploaden

Folgendes Szenario:
cURL-WebService

Es soll eine Bilddatei nach dem Upload über einen externen Webservice Anbieter verändert werden ( Hinzufügen von Bildeffekten ).. Von der externen Kommunikation sollte der Benutzer nichts zu sehen bekommen. Hiermit fällt das Einbinden einer externen Formular "action" also aus.. Um die Daten trotz alledem an den Webservice weiterzuleiten gibt es in PHP die Erweiterung cURL. Diese Erweiterung kann unter Anderem dazu genutzt werden Serveranfragen zu stellen ( also GET/ POST etc.. ) .

In meinem Falle habe ich die Datei erst komplett auf meinen Server kopiert und dann über cURL weitergeschickt..

Beispiel:

<?php
$targetFile
= "../upload/".$_FILES['Filedata']['name'];
$data = array(    'script_id' => 123,
                   
'access_key' => 'ashdj2asas212kjad1121',
                   
'image' => "@$targetFile");

   
$ch = curl_init("http://www.domain.com/process");
   
curl_setopt($ch, CURLOPT_POST, true);
   
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   
$x = curl_exec($ch);

   
$xml  = simplexml_load_string($x); // in diesem Fall wird ein XML vom CURL-Aufruf returned..
?>

Die XML Rückgabe lässt sich dann wie gewohnt weiterverarbeiten..

Natürlich kann man diese Post-Anfrage auch über andere Wege ( SOAP, REST, fsockopen ) erstellen - in cURL sah ich in meinem Falle aber den geringsten Schreibaufwand ;)..

Um mit CURL zu arbeiten muss die entsprechende PHP Extension aktiviert werden !

Ein gutes Tutorial zum Thema CURL gibt es auch bei nettuts+
Techniques for Mastering cURL