[cURL] Upload fichier avec la méthode POST
Bonjour à tous,
Je développe actuellement une petite application web qui utilise l'API d'un site web tiers. J'ai besoin d'uploader des images sur leur serveur et j'expérience des difficultés avec l'extension CURL.
Pour cela, j'utilise la méthode POST. Voici le code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
// le nom du serveur de l'API
define ('HOSTNAME_UPLOAD', 'http://upload.cafepress.com/');
// voici les paramètres dont j'ai besoin pour l'upload
$api_key = $_POST['key']; // clef de l'API
$user_token = $_POST['token']; // numéro de session fourni par l'API après identification
//URL vers laquelle on va effectuer l'upload
$url = HOSTNAME_UPLOAD."image.upload.cp";
// ouverture de la session curl
$session = curl_init($url);
//Création des champs du formulaire
$postvars = array();
$postvars['userToken'] = $user_token;
$postvars['appKey'] = $api_key;
$postvars['folder'] = 'Images';
$postvars['cpfile1'] = '@'.realpath('test.jpg'); // voici l'image que je veux upload, elle se trouve par ailleurs dans le même dossier que ce script
curl_setopt($session, CURLOPT_POST, true); // méthode POST
curl_setopt($session, CURLOPT_POSTFIELDS, $postvars); // les champs du formulaire
// Je ne veux pas récupérer les headers mais juste le xml retourné par l'API
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// on fait l'appel
$xml = curl_exec($session);
// le service retourne du xml
header("Content-Type: text/xml");
echo $xml;
curl_close($session); |
Le souci vient apparemment de l'upload du fichier (car je suis correctement identifié, pas de soucis de ce côté là). Tout indique que les bits de l'image ne sont tout simplement pas envoyés.
En parcourant la doc, j'ai essayé d'inclure cette ligne:
Code:
curl_setopt($session, CURLOPT_UPLOAD, true);
Mais le serveur ne l'accepte pas et me renvoit une erreur du type: "Unsupported request".
J'avoue être à court d'idée...
Merci pour tout l'aide que vous pourrez m'apporter!
Pierre