Bonjour,
Je m'adresse à vous après deux journées de recherche. En faite, j'essaye de programmer un CGI en C qui récupère un fichier via un formulaire avec la méthode POST.
Mon formulaire est le suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
  <title>Transfert de fichier/title>
</head>
 
<body>
 
<form name="nom_formulaire" action="http://10.193.6.56:80/cgi-bin/transfertFichier.cgi" method="post" enctype="multipart/form-data">
 
<input type="hidden" name="MAX_FILE_SIZE" value="600000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
 
</body>
</html>
de l'autre coté j'ai écrit mon CGI de la façon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 600000
#define EXTRA 5
/* 4 for field name "data", 1 for "=" */
#define MAXINPUT MAXLEN+EXTRA+2
/* 1 for added line break, 1 for trailing NUL */
#define DATAFILE "essaie.wav"
 
 
int main(void)
{
char *lenstr;
char input[MAXINPUT], data[MAXINPUT];
long len;
printf("%s%c%c\n",
"Content-Type:text/html;charset=iso-8859-1",13,10);;
lenstr = getenv("CONTENT_LENGTH");
if(lenstr == NULL)
printf("lentstr problem\n");
 else if ( sscanf(lenstr,"%ld",&len)!=1)
printf("error sscanf.\n");
 else if ( len > MAXLEN)
  printf("len et MAXLEN prob.\n");
 
else {
  FILE *f;
  fgets(input, len+1, stdin);
  f = fopen(DATAFILE, "a");
  if(f == NULL)
    printf("Sorry, cannot store your data.\n");
  else
    fputs(data, f);
  fclose(f);
  printf("Thank you! Your contribution has been stored.\n");
  }
return 0;
}
le problème est que dans le résultat j'ai une page vide avec aucune information et aucun message de ce que j'ai spécifié.
J'ai essayé de débugger mais sans vain

Pour résumer je veux uploader un fichier essaie.wav de ma machine windows et je voudrais que mon programme CGI qui se trouve sur le serveur linux récupère se fichier et le stocke sur son disque dur.


Avez vous une idée