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:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
En parcourant la doc, j'ai essayé d'inclure cette ligne:
Mais le serveur ne l'accepte pas et me renvoit une erreur du type: "Unsupported request".
Code : Sélectionner tout - Visualiser dans une fenêtre à part curl_setopt($session, CURLOPT_UPLOAD, true);
J'avoue être à court d'idée...
Merci pour tout l'aide que vous pourrez m'apporter!
Pierre
Partager