Secondo me c'èun pò di confusione sulle possibilità e modalità di download di un file dalla rete.

Premetto che la cosa migliore sarebbe quella di zippare i file prima di metterli sul server, questo eviterà molti problemi.

Cosa succede quando proviamo a scaricare qualcosa ?

Il browser su un link del tipo :

codice:
download
Non riconoscendo il formato come quello di un programma che riesce ad aprire ( tipo Word, Power Point, etc ... ) mostra la finestra di 'Salva con oggetto con Nome' ( per IE ma simile anche agli altri browser ).

Fin qui tutto Ok !

Se il file invece ha un'estesione 'conosciuta' come .doc .rtf .pps .xls ect ... prova ad aprirla con un programma che riesce a far 'girare' come negli esempi Word, Power Point, Excel ,...

Quindi per ovviare a questo o si zippa il file oppure se si ha il supporto sul server di un linguaggio server side ( ad es PHP ) si può fare un download .

Soluzione proposta in un 3d da guidoz :

http://www.tuosito.it/downloader.php?file=nomefile.pdf
dove downloader.php è:

codice:
  //controllo per evitare che l'utente alterando la querystring riescano a scaricare altri files [magari i sorgenti php ^_^]
  if(substr($_GET['file'], -3, 1) != 'pdf')
  {
    echo 'errore';
    exit;
  }
  
  //leggo il file in una variabile
  $contenuto = implode('', file($_GET['file']))
  //informo il browser che quanto sto per inviare è un pdf
  header("Content-Type: application/pdf"); 
  
  //informo il browser che deve scaricare il file
  header("Content-Disposition: attachment; filename={$_GET['file']}");
  
  //informo il browser che si tratta di un trafserimento binario
  header("Content-Transfer-Encoding: binary");
  
  //invio il file al browser
  echo $contenuto;
Spero di essere stato abbastanza chiaro ... buon lavoro !