|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : le http post OK. Mais pour un UPLOAD de fichier ? [ Archives / Réseau / Internet ] (pdessoulles)
Informations & options pour cette discussion
|
lundi 22 septembre 2003 à 03:10:38 |
le http post OK. Mais pour un UPLOAD de fichier ?

pdessoulles
|
Salut à tous, Le problème suivant me pourrit la vie depuis quelques jours : J'arrive bien à envoyer des données sur une socket ouverte sur un serveur http avec les méthodes post ou get, mais pour la "post", je sèche sur l'upload de fichier. Un formulaire html en "post" simple est : <form action="toto.php" method="post" name="form1" onSubmit="return true;"> <input name="titi"> <input type="submit" value="SUBMIT"> </form> ce qui donne, lorsqu'on a saisi "canari", pour la chaîne de caractère à envoyer sur la socket: "POST toto.php HTTP/1.1\r\n" "Host: www.site_web.com\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: 11\r\n" // taille des données qui suivent "\r\n" "titi=canari\r\n" "\r\n" Et dans le script php qui récupère les données, "toto.php", on a bien : $_POST['titi'] qui renvoie la valeur "canari" Tout ça, c'est très bien et ça marche, mais ce que j'aimerais, c'est savoir quoi envoyer à la socket avec le formulaire d'upload de fichier : <form enctype="multipart/form-data" action="send.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="100000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form> qui a pour conséquence, dans le script php "send.php" de remplir le tableau superglobal $_FILES[] et non pas $_POST[] (tout en uploadant, bien entendu, le fichier en question dans le répertoire temporaire du site web) A celui ou ceux qui pourront m'aider.. et me rendre le sommeil, un grand merci. Philippe
|
|
|
|
samedi 29 novembre 2003 à 01:15:15 |
Re : le http post OK. Mais pour un UPLOAD de fichier ?

amodels
|
Bonjour. Comme vous avez noté pouvoir lancer un fichier PHP distant, je me demandais si vous pourriez m'envoyer le source C de cet exploit ;) En effet, je suis dessus depuis plusieurs mois ;( Je bloque sur les fonctions du C 'recv()' et 'sendto()'. J'espère pouvoir ensuite vous aider ... Merci d'avance Zian (dune2@free.fr)
|
|
|
|
samedi 29 novembre 2003 à 13:25:18 |
Re : le http post OK. Mais pour un UPLOAD de fichier ?

amodels
|
Rebonjour, voici le code que j'expérimente :
#include <stdio.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") void main() { WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("127.0.0.1"); sin.sin_family = AF_INET; sin.sin_port = htons(80); sock = socket(AF_INET,SOCK_STREAM,0); bind(sock, (SOCKADDR *)&sin, sizeof(sin)); printf("\n\n -> CONNEXION OK");
send(sock,"POST toto.php HTTP/1.1\r\n",24,0); send(sock,"Host: 127.0.0.1\r\n",23,0); send(sock,"Content-Type: application/x-www-form-urlencoded\r\n",49,0); send(sock,"Content-Length: 11\r\n",20,0); // le 11 est la taille de 'titi=canari' send(sock,"\r\n",2,0); send(sock,"titi=canari\r\n",13,0); send(sock,"\r\n",2,0);
printf("\n\n -> TRANSFERT OK"); closesocket(sock); WSACleanup(); }
Ca ne fonctionne malheureusement pas. Please help :)
|
|
|
|
lundi 1 mars 2004 à 15:39:38 |
Re : le http post OK. Mais pour un UPLOAD de fichier ?

nomodie
|
bon, pour mon premier post, j'espere ne pas ecrire trop de conneries...... J'ai testé ton prog, amodels, pour acceder a un serveur apache en local(EasyPHP), effectivement, il me ressort une erreur 10048, socket deja utilisée. En matant l'aide en ligne, ils indiquent qu'un client (ce qui a l'ai d'etre le cas ici) n'a pas forcement besoin d'appeleer la fonction bind() (ma theorie perso: bind doit rendre l'usage d'une socket exclusive, et vu qu'apache doit en creer une pour ecouter sur le port 80,ca bug....). Une fois fait, je me connecte bien (preuve en est le fichier 'Acces Apache', mais j'ai une erreur style 'Request failed: error reading the headers', fichier 'Fichier log->erreur Apache'. Pour tenter le coup, je met tout le texte a envoyer dans une seule chaine, et je ne fais qu'un seul send(). Et ca a marché...Le script php recupere bien les données, et s'execute parfaitement..... Pour l'envois de fichiers, apres avoir passer du temps a mater les aides et rfc sur les requetes http, on voit qu'une telle requette se decoupe ainsi: POST LA OU JE VEUX.php HTTP/1.1\r\n Host: 127.0.0.1\r\n Content-Type: multipart/form-data; boundary=---6G+f\r\n Content-length:218\r\n\r\n-----6G+f\r\n Content-Disposition: form-data; name='fichier'; filename='C:\\test.txt'\r\n Content-type:text/plain\r\n \r\nCeci est un test!!!\r\n -----6G+f--\r\n (j'ai mis le \r\n passsssque Apache, il est assez pointilleux avec ces trucs....). le boundary, c'est un separateur que tu defini toi meme, mais faut penser a rajoutter '--' devant, pour indiquer le debut d'un block , et '--' au dernier que tu utilises (fin du message) Et pareil, un seul send(). Voila, ca marche chez moi, j'espere que ca te mettrra au moins sur la voie....
|
|
|
|
jeudi 25 mars 2004 à 21:02:31 |
Re : le http post OK. Mais pour un UPLOAD de fichier ?

seed
|
j'ai un petit problème chez moi je n'arrive pas à envoyer une requete POST. J'ai enlevé le bind et j'ai créer un page test.php qui dès qu'elle est lancé crée un fichier texte contenant la variable $_POST['var']. je lance le programme mais rien ne se passe même dans les logs Acces de Apache (easyphp) rien du tout.
voici le code : //----------------------------------------------------------- #include <stdio.h> #include <conio.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") void main() { WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("127.0.0.1"); sin.sin_family = AF_INET; sin.sin_port = htons(80); sock = socket(AF_INET,SOCK_STREAM,0); printf("\n\n -> CONNEXION OK");
send(sock,"POST test.php HTTP/1.1\r\n",23,0); send(sock,"Host: 127.0.0.1\r\n",23,0); send(sock,"Content-Type: application/x-www-form-urlencoded\r\n",48,0); send(sock,"Content-Length: 11\r\n",20,0); send(sock,"\r\n",2,0); send(sock,"var=canaris\r\n",13,0); send(sock,"\r\n",2,0);
printf("\n\n -> TRANSFERT OK"); getch(); closesocket(sock); WSACleanup(); } //-----------------------------------------------------------
|
|
|
|
jeudi 25 mars 2004 à 22:17:21 |
Re : le http post OK. Mais pour un UPLOAD de fichier ?

nomodie
|
dis moi, t'aurais pas oublié: if(connect(sock,(SOCKADDR*)&sin,sizeof(sin))==0)//connection a un serveur juste avant de faire tes send par hasard?
|
|
|
|
samedi 27 mars 2004 à 10:27:37 |
Re : le http post OK. Mais pour un UPLOAD de fichier ?

seed
|
OUps en effet j'avais recopier le code sans trop y faire attention par contre chez moi php ne recoit aucune variables POST si j'envoie la requete avec plusieurs sends comme dans le script de amodels
mais sinons si je mets tous dans une chaine de caracteres ca marche nikel.
MERCi
|
|
|
|
samedi 27 mars 2004 à 11:26:45 |
Re : le http post OK. Mais pour un UPLOAD de fichier ?

nomodie
|
Ouaip, Apache semble pointilleux sur les requetes envoyées, mais il est possible qd meme de decouper une requete (notament qd on envoie des fichiers), il faut juste tester les 'decoupes' pour trouver ce qu'il accepte. Au fait, tant que j'y pense, si vous voulez envoyer des fichiers avec vos requetes du type image par exemple, penser a ouvrir les fichiers en mode binaire et a utiliser des pointeurs 'void' pour recuperer les infos du fichiers et les balancer, sinon, vous vous retrouverez comme moi a avoir des fichiers gif imcomplet (passssque char interprete certain caracteres, comme le caractere null, et il peut tres bien (toujours?) y avoir de tels caracteres dans un fichier image. Par exemple: void content=malloc(taillefichier)); memset(content,0x00,taille); //lecture du fichier fread(content, 1, taille, fp ); //envois le fichier send(sock,(char*)content,taille,0); et la, ca me regle le probleme.
|
|
|
Cette discussion est classé dans : fichier, php, upload, http, post
Répondre à ce message
Sujets en rapport avec ce message
Upload fichier par HTTP avec c++ builder [ par sidhannowe ]
Salut, J'aurais voulu savoir comment procéder pour envoyer un fichier image par le HTTP (donc équivalent à un formulaire web en post et champ file) a
Requête POST http [ par tetedemul ]
Bonjour, je voudrais faire une requete post avec un socket. Mon code fonctionne, dans le log d'apache j'ai bien "POST test.php...".Mais comment récupé
Upload fichier via HTTP [ par Taron31 ]
Bonjour, je souhaiterais connaitre un moyen simple et efficace (si possible) d'uploader un fichier via HTTP, sur des sites du genre upoad.free.fr ou a
Langage C/serveur/PHP [ par fabulofr ]
Bonjour ou plutot bonsoir à tous.Je viens vous embeter avec un petit probleme.Je possède un serveur dédié contenant un jeu en ligne.Ce jeu fonctionne
Upload un fichier .TXT [ par MorbhAck ]
Bonsoir a tous !J'aimerai savoir comment on Uploader un fichier .txt sur un serveur FTP ??J'ai vu plusieur source sur Cppfrance mais elle sont trop co
Problème lors de la récéption de données en HTTP [ par Fran6web ]
Bonjour,Je suis en train de me faire un programme en C qui me récupère le contenu d'un page envoyé par protocole HTTP.J'ai cependant un p'tit problème
Winsock et les accents... [ par fredsor ]
Salut a tous, Voila j'ai realisé un projet, celui-ci consiste à récupérer une chaine de caracteres provenant d'une servlet distante.Bon jusque là rien
POST HTTP [ par draluorg ]
Salut a tous,eh c'est pas vraiment une question sur le C mais je sais pas trop ou poster ca...En fait j'ai une appli qui doit poster un message dans u
[dev-cpp] probleme de compilation d'un fichier de classes [ par gergalp ]
Voilà, alors, j'ai un fichier de classes qui est inclus dans le fichier principal ou j'ai ma fonction main(). Quand je veux compiler, j'ai l'erreur :
application d'upload de fichier via internet [ par symbiote80 ]
Bonjour,J'aimerai développer une application de transfert de fichiers d'un poste local vers un serveur distantIl faudrait aussi que l'application s'in
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|