Requete HTTP POST MIME C++

Fermé
Chouquette - 20 janv. 2009 à 19:27
djerem06 Messages postés 46 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 23 avril 2015 - 30 juil. 2010 à 14:19
Bonjour,
Bonjour, je suis débutant et j'ai créer une fonction pour uploader un fichier sur un serveur php apache via le protocole http et le standard mime. Le problème est pour uploader une image jpg, j'avais penser l'encoder en base_64 et rajouter Content-Transfer-Encoding:base64 dans le header de la requête, mais apparemment ça ne semble pas possible avec le protocole http (voir rfc2616 - 19.4.5 : http://www.faqs.org/rfcs/rfc2616.html si je l'encode en base 64 le fichier recut sur le serveur php reste en base 64 et n'est pas décodé ... et si je ne converti pas le fichier et l'envoi tel qu'elle(comme dans le code ci-dessous) cela ne marche pas non plus ... comment puis-je faire ?


Merci d'avance pour vos réponse ..
désolé si je n'ai pas été assez clair, mais n'hésitez pas à poser des questions ..
Chouquette.


Mon Code :


void UPLOAD()
{

WSADATA WSAData;
int erreur = WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
char buffer[1024] = "";

/* Si les sockets Windows fonctionnent */
if(!erreur)
{
/* Création de la socket */
sock = socket(AF_INET, SOCK_STREAM, 0);

/* Configuration de la connexion */
struct hostent *ipserver;
ipserver = gethostbyname(url_server);
memcpy(&sin.sin_addr,ipserver->h_addr,ipserver->h_length);
sin.sin_family = AF_INET;
sin.sin_port = htons(80);

/* Si l'on a réussi à se connecter */
if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) != SOCKET_ERROR)
{

FILE* fichier = NULL;
char chaine[45000];
char commande[50000];
char variables[60000];
fichier = fopen("test.jpg", "r");

sprintf(variables,"--frontier\r\nContent-Disposition: form-data; name=\"envoyer\"\r\n\r\noui\r\n--frontier\r\nContent-Disposition: form-data; name=\"fichier\"; filename=\"test.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n");

if (fichier != NULL)
{
while (fgets(chaine, 45000, fichier) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
{
strcat(variables,chaine);
}
}

strcat(variables,"\r\n--frontier--\r\n");
sprintf(commande,"POST %s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nContent-Type: multipart/form-data; boundary=\"frontier\"\r\nMIME-version: 1.0\r\nContent-Length:%d\r\n\r\n%s",http_req_path,url_server,strlen(variables),variables);
send(sock,commande,strlen(commande)+1,0);

char response [1024] ="";
while (recv(sock,buffer, 1024, 0) > 0)
{
strcat(response, buffer);
}
char *resultatfinal = strstr(response, "\r\n\r\n")+4;
printf("%s", resultatfinal);



}
/* sinon, on affiche "Impossible de se connecter" */
else
{
printf("Impossible de se connecter\n");
}

/* On ferme la socket */
closesocket(sock);

WSACleanup();
}

}

1 réponse

djerem06 Messages postés 46 Date d'inscription jeudi 5 juin 2008 Statut Membre Dernière intervention 23 avril 2015 6
30 juil. 2010 à 14:19
c'est trop pointu pour étre posé sur ccm cette question lol
0