force download

Salve!

Ho trovato e provato questo script di download:

function forceDownload(&$file){
   if(file_exists($file)==true && is_readable($file)==true) {
      $filename=&basename($file);
      if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')!==false) {
         $parsename=&explode('.', $filename );
         $last=count($parsename) - 1;
         $filename=&implode('%2E', array_slice($parsename, 0, $last));
         $filename .='.'.$parsename[$last];
                        $php .='.'.$parsename[$last];
         if($php==".php"){                        //
         $refe=$_SERVER['HTTP_REFERER'];  //se è un file.php rimanda alla pagina precedente
         header("Location:$refe");              //
         exit;
         }
      }
      $content = &file_get_contents($file);
      header('Content-Type: application/octet-stream');
      header('Content-Disposition: attachment; filename="'.$filename.'"');
                header('Content-Length:'.strlen($content));
      header('Content-Transfer-Encoding: binary');
      echo $content;
      exit(0);
   }
}
$myFile='ciao.txt'; //questo file di prova contiene la stringa ciao
forceDownload($myFile);

credo sia familiare a qualcuno visto che l'ho preso da qui: http://www.phpnews.it/forum/index.php?topic=1534.0

Sapreste dirmi per quale motivo il contenuto del file ciao.txt (che è la parola "ciao") viene tradotta in <!DO dopo il download?

Grazie a tutti.

 :)

inviato 9 anni fa
spaghettiss
X 0 X

A me funziona, sia con Firefox che con IE7

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Davvero??  ???

Che strano...a me Fire Fox mi converte la stringa in <!DO mentre IE 6 mi aggiunge DTD, head, body la stringa corretta e le relative chiusure dei tag  :o

Bah...

risposto 9 anni fa
spaghettiss
X 0 X

Davvero??  ???

Che strano...a me Fire Fox mi converte la stringa in <!DO mentre IE 6 mi aggiunge DTD, head, body la stringa corretta e le relative chiusure dei tag  :o

Bah...

Non so che dirti, ho creato uno script PHP prendendo proprio il codice che hai riportato (copia->incolla). Poi ho creato un file di testo di prova ed il download ha fuzionato con entrambi i browser.  :dunno:

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Evidentemente sbaglio qualcosa io!!

Grazie lo stesso!

 :bye:

risposto 9 anni fa
spaghettiss
X 0 X

ciao a tutti

pardon.....

scusatemi l'ignoranza...mi potreste spiegare a grandi linee che fa questa funzione di speciale?

grazie

risposto 9 anni fa
dyd666
X 0 X

Generalmente se clicchi su un link ad un file presente sul server per scaricarlo il browser prova a mostrarti il contenuto invece di fartelo salvare sul PC. Questo succede per tutti i file che il browser può, direttamente o indirettamente, gestire. Ad esempio i testi, le immagini, ma anche i filmanti ed i PDF se hai i plugin adeguati.

Con questo script invece invii al browser degli header (intestazioni) che lo costringono a limitarsi a salvare il file sul PC piuttosto che varlo vedere all'utente.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

grazie della spiegazione....

ne faro tesoro   :P

risposto 9 anni fa
dyd666
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda