Accueil > Forum > > > > le http post OK. Mais pour un UPLOAD de fichier ?
le http post OK. Mais pour un UPLOAD de fichier ?
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ée 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
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Magic
Entre 429€ et 429€
|