PHP: File-Uploads mit Httpful

So können die Datei-Uploads mit dem PHP HTTP Client Httpful umsetzen.

In einem meiner Projekte nutze ich den HTTP Client Httpful um mit PHP verschiedene Schnittstellen zu testen. Leider habe ich doch recht lange gebraucht, um herauszufinden wie man File-Uploads umsetzen kann. Der Client für PHP ist zwar grundsätzlich recht gut dokumentiert, jedoch sind Datei-Uploads nicht beschrieben. So geht der Upload mit Httpful.

Anders als viele andere Funktionen von Httpful, scheint die attach-Methode nicht chainable zu sein, d.h. man kann Sie nicht in einer langen Kette von Anweisungen schreiben – zumindest hat es bei mir erst dann funktioniert, als ich die Funktion seperat aufgerufen haben. Zunächst brauchen wie aber erstmal unseren Request:

use Httpful\Request;

Als nächstes benötigen wir unser tatsächliches Request-Objekt:

$url = 'http://meineurl.de';

$request = Request::post($url);

Diesem Request-Objekt können wir nun noch verschiedene Parameter anhängen:

$params = array(
  'param1' => 'value1',
  'param2' => 'value2',
  'param3' => 'value3'
);

// add params to body
$request->body($params);

Und nun kommt die eigentliche Magie, nämlich das anhängen von Dateien. Diese werden per attach-Methode übergeben. Diese erwartet ein Array, wobei die Keys die Felder für die Dateien sind und die Values die lokalen Dateipfade:

$files = array(
  'file1' => './media/file.pdf'
);

$request->attach($files);

Danach muss man das Ganze eigentlich nur noch absenden und die Response auswerten.

$response = $request->send();

Sollte die Datei nicht existieren, kann es schonmal zu komischen Fehlermeldungen kommen. Es empfiehlt sich dann einmal die Payload im Request anzuschauen, ob dort tatsächlich ein Anhang vorhanden ist.

var_dump($request->payload);

Ich habe heute bestimmt 3 bis 4h damit zugebracht, diese Erkenntnisse zusammen zu tragen. Ich hoffe, dass es anderen hilft schneller ans Ziel zu kommen.

 


0 0 0


Diskussion

avatar placeholder
24. Jul 2017 von Mike

Danke! Das funktioniert :)

avatar placeholder
18. Sep 2017 von Stephan

Vielen Dank dafür. Neben vielen Antworten die NIHCT zum gewünschten Ergebnis geführt haben, habe ich nach einiger Suche eben diese Antwort gefunden.

So geht’s und nicht anders !!!

Mitdiskutieren

*