Salve a tutti,
volevo forzare il download di un file (.txt) da parte del browser che fà richiesta tramite get con un mio CGI scritto in C.Ho trovato gli header per fare questo ma il file non mi si scarica correttamente.Provo a fare un esempio. L'utente preme su un bottone per recuperare un file .txt e questo bottone apre un get ad un mio cgi di nome example.exe e mi passa come parametro di query get il nome del file.
Io recupero il nome inviatomi e al browser mando questi header:
Il cgiOut sarebbe l'invio al browser della stringa.fprintf(cgiOut, "Content-type: %s\r\n\r\n", "application/x-download");
fprintf(cgiOut, "Content-Disposition: attachment; filename=%s;\r\n\r\n", "prova.txt");
fprintf(cgiOut, "Accept-Ranges: bytes\r\n\r\n");
fprintf(cgiOut, "Content-Length: %d\r\n\r\n",70);
if( (stream = fopen( path, "rt" )) != NULL )
{
while( !feof( stream ) )
{
//leggo tutti i BYTE in una volta solo
numByte = fread( buffer, sizeof( char ), 500, stream );
buffer[70] = '\0';
fprintf(cgiOut,buffer);
if( ferror( stream ) )
return 0;
}
}
fclose( stream );
Il fatto è che il browser si rende conto che deve essere scaricato un file(mi pare la finestra di download file) indice che il content-type è stato letto ma il nome del file è example.exe(ossia quello del CGI) e mi restituisce gli altri header come stringa. La prova l'ho fatto con un file di 70 bytes.
Qualche idea o suggerimento?