Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > Autres
Autres Vos questions sur les autres bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/08/2012, 19h02   #1
lea436
Invité de passage
 
Homme
Inscription : août 2011
Messages : 13
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2011
Messages : 13
Points : 3
Points : 3
Par défaut cURL : Upload d'un fichier

Bonsoir,

je viens ici pour vous demander de l'aide à propos de l'upload d'un fichier depuis un programme écrit en C++ vers un serveur (réception HTML/PHP).

Je me suis déjà grandement inspiré du tuto du site de cURL ainsi que d'autres sur Internet mais rien n'y fait, impossible d'obtenir le fichier sur le serveur.

Avant tout, j'ajoute que l'upload manuel (en passant par la page web) fonctionne.

Voici mes différents scripts :

-HTML :
Code :
1
2
3
4
5
<form method="post" enctype="multipart/form-data" action="upload.php">
 Enter file: <input type="file" name="sendfile" size="40">
 Enter file name: <input type="text" name="filename" size="40">
 <input type="submit" value="send" name="submit">
 </form>
-C++ :
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
CURL *curl;
			CURLcode res;
 
			struct curl_httppost *formpost=NULL;
			struct curl_httppost *lastptr=NULL;
 
			curl_global_init(CURL_GLOBAL_ALL);
 
			curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "sendfile", CURLFORM_FILE, "mpdata", CURLFORM_END);
			curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "filename", CURLFORM_COPYCONTENTS, "mpdata", CURLFORM_END);
			curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "submit", CURLFORM_COPYCONTENTS, "send", CURLFORM_END);
 
			curl = curl_easy_init();
			if(curl) 
			{
				curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1/uploadtest.php");
				curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
				res = curl_easy_perform(curl);
 
				if(res != CURLE_OK)
					cout << "cURL Error";
 
				curl_formfree(formpost);
				curl_easy_cleanup(curl);
				curl_global_cleanup();
}
-PHP :
J'ai repris le code de ce tuto. (J'ai bien évidemment modifié les variables comme j'en avais besoin).

Ce qui semble bizarre, c'est que l'envoie se passe correctement mais impossible d'obtenir ce fichier.
J'ai dumpé le réseau pour voir ce qui se passe en réalité :

Code :
1
2
3
4
5
6
7
8
9
10
11
POST /uploadtest.php HTTP/1.1..Host: 127.0.0.1..Accept: */*..Content-Length: 8913..Expect: 100-continue..Content-Type: multipart/form-data; boundary=----------------------------272c79f90e20....
 
HTTP/1.1 100 Continue....
 
------------------------------272c79f90e20..Content-Disposition: form-data; name="sendfile"; filename="mpdata"..Content-Type: application/octet-stream....
 
(Envoi du fichier, je ne post pas les 8476 octets)
 
..------------------------------272c79f90e20..Content-Disposition: form-data; name="filename"....mpdata_1e67a4fbfb8ec9daa9e81cd8f0fa525c..------------------------------272c79f90e20..Content-Disposition: form-data; name="submit"....send..------------------------------272c79f90e20--..
 
HTTP/1.1 200 OK..Date: Wed, 29 Aug 2012 16:51:12 GMT..Server: Apache/2.2.3 (CentOS)..X-Powered-By: PHP/5.3.15..Content-Length: 282..Connection: close..Content-Type: text/html; charset=UTF-8....<html><body><form method="post" enctype="multipart/form-data" action="upload.php">.. Enter file: <input type="file" name="sendfile" size="40">.. Enter file name: <input type="text" name="filename" size="40">.. <input type="submit" value="send" name="submit">.. </form></body></html>
J'espère que vous pourrez m'aider. Je vais essayer de spécifier le chemin complet du fichier à envoyer mais je ne suis pas sûr que ça vienne de là.

Merci d'avance
lea436 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h55.


 
 
 
 
Partenaires

Hébergement Web