Bonjout tout le monde;
J'ai besoin d'un code c qui me permet d'envoyer un fichier (une image par exemple) à un serveur HTTP.
Merci.
Bonjout tout le monde;
J'ai besoin d'un code c qui me permet d'envoyer un fichier (une image par exemple) à un serveur HTTP.
Merci.
Ce n'est pas très compliqué à faire, il suffit d'implémenter la requête POST en C avec les sockets.
Tu as tout ce qu'il faut dans la RFC 2616 pour les détails d'implémentation
Merci pour la réponse;
mais je veux clarifier 2 points:
* Est ce que je dois convertir ( avant d'envoyer la requete http ) l'image en ASCII et la mettre au buffer?
* si vous avez un exemple de trame http POST d'envoi d'un fichier merci de la poster.
salut,
j'ai trouvé un bout de code pour former ma trame http pour envoyer un fichier texte.
Le serveur affiche que l'upload est complet mais n ouvrant le fichier je le trouve vide.
voici le code:
const char entete1[] = "POST /Upload HTTP/1.1\r\n"
"Content-Type: multipart/form-data; boundary=92521164717432\r\n"
"Content-Length: ";
const char cariage_return[] = "\r\n\r\n";
const char entete2[] = "--92521164717432\r\n"
"Content-Disposition: form-data; name=\"passwd\"\r\n\r\n";
const char mdp[] = "0011223344556677";
const char entete3[] = "\r\n--92521164717432\r\n"
"Content-Disposition: form-data; name=\"frontalip\"\r\n\r\n";
const char entete4[] = "\r\n--92521164717432\r\n"
"Content-Disposition: form-data; name=\"request\"; filename=\"file\"\r\n"
"Content-Type: application/octet-stream\r\n\r\n";
const char boundary[] = "\r\n--92521164717432--\r\n\r\n";
int send_http( char *file_to_send, unsigned int file_length )
{
int lenRequest;
int len_header;
char adr_ip[64];
char pRequetteBuffer[3100];
memset( pRequetteBuffer,0x00,sizeof(pRequetteBuffer));
//unsigned int RequestBufferLen = 0;
memset( adr_ip,0x00,sizeof(adr_ip));
memcpy( adr_ip,"10.3.1.44",9);
len_header = strlen(entete2) + strlen(mdp) + strlen(entete3) + strlen(adr_ip) + strlen(entete4) + strlen(boundary);
sprintf(pRequetteBuffer,"%s%d%s%s%s%s%s%s", entete1, len_header + file_length, cariage_return,
entete2, mdp, entete3, adr_ip, entete4);
lenRequest = strlen(pRequetteBuffer);
memcpy(pRequetteBuffer + lenRequest, file_to_send, file_length);
lenRequest = lenRequest + file_length;
sprintf(pRequetteBuffer + lenRequest, boundary);
lenRequest += strlen(boundary);
SendMessage(pRequetteBuffer,lenRequest);
}
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager