Upload de fichier avec libcurl, définir "name" et autre.

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, (Je suis nouveau sur se forum, venu depuis OpenClassrooms, donc je me présente vite fais. J'ai 16 ans, passionné d'informatique et plus précisément dans le développement web. Actuellement je suis une formation de Dessinateur-constructeur en microtechnique.)

Voici donc mon problème. J'ai un code en c++ pour upload un fichier sur un site web. Mais le retour de ma page indique qu'aucun fichier n'a été transmis. Normal je suppose, puisque je dois nul part définir le name="" de de l'input.

Voici mon code (c++):

 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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <curl/curl.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(void)
{
 CURL *curl;
 CURLcode res;
 struct stat file_info;
 double speed_upload, total_time;
 FILE *fd;

 fd = fopen("D:/sound.mp3", "rb"); /* open file to upload */
 if(!fd) {

   return 1; /* can't continue */
 }

 /* to get the file size */
 if(fstat(fileno(fd), &file_info) != 0) {

   return 1; /* can't continue */
 }

 curl = curl_easy_init();
 if(curl) {
   /* upload to this place */
   curl_easy_setopt(curl, CURLOPT_URL,
                    "http://dev.winlap.ch/libcurl");

   /* tell it to "upload" to the URL */
   curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);

   /* set where to read from (on Windows you need to use READFUNCTION too) */
   curl_easy_setopt(curl, CURLOPT_READDATA, fd);

   /* and give the size of the upload (optional) */
   curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
                    (curl_off_t)file_info.st_size);

   /* enable verbose for easier tracing */
   curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

   res = curl_easy_perform(curl);
   /* Check for errors */
   if(res != CURLE_OK) {
     fprintf(stderr, "curl_easy_perform() failed: %s\n",
             curl_easy_strerror(res));

   }
   else {
     /* now extract transfer info */
     curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed_upload);
     curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total_time);|

     fprintf(stderr, "Speed: %.3f bytes/sec during %.3f seconds\n",
             speed_upload, total_time);

   }
   /* always cleanup */
   curl_easy_cleanup(curl);
 }
 return 0;
}

Et la page PHP (Disponible sur dev.winlap.ch/libcurl)

1
2
3
4
5
6
7
8
9
<?php
if(isset($_FILES['upload']))
{
  echo 'FICHIER RECU';
}
else
{
  echo 'ERREUR';
}

Voilà. Si vous avez une idée de comment définir se name, c'est avec plaisir. En vous remerciant, WinXaito.

Édité par WinXaito

+0 -0
Auteur du sujet

Je vous annonce que j'ai réussi à règler mon problème. Merci à Dab de m'avoir aidé sur le chat IRC.

Il fallait que je prenne exemple sur le fichier postit2.c plutôt que fileupload.c

Bonne journée, WinXaito.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte