Newsgroup: it.comp.www.php
Titolo: download file con nome diverso

Se in un sito ho un file con un nome pratico per gestirlo tramite degli 
script, ma poco intelligibile da esseri umani, e voglio renderlo disponibile 
per il download, ma facendo sě che a chi lo scarica appaia con un nome 
diverso, come dovrei fare? Esiste qualche funzione php adatta, o mi tocca 
fare due copie del file con nomi diversi? Al limite potrei far sě che alla 
richiesta del file lo script ne faccia una copia, per poi cancellarla subito 
dopo il download, ma sarei lieto se ci fosse un modo meno macchinoso...
Grazie 

 ha detto:

http://it.php.net/manual/it/function.header.php
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it
Salve Francesco,
credo ti riferissi a questo:
header("Content-Disposition: attachment; filename=downloaded.pdf");
che č l'esempio riportato dal tuo link.
sotto perņ leggo:
Nota:  Per un bug di Microsoft Internet Explorer 4.01 qusto sistema non 
funziona. Non ci sono soluzioni. C'č un altro bug in Microsoft Internet 
Explorer 5.5 che impedisce il giusto funzionamento, ma č possibile 
risolverlo con l'upgrade del Service Pack 2 o superiore.
Nel caso fossimo certi che l'user utilizza Internet Explorer 4.01, o
Internet Explorer 5.5 senza SP2, ci sarebbe una qualsiasi altra maniera
per fare ciņ che ha chiesto Jan??
Credo si sia capito che sono io stesso interessato.
Saluti e Grazie anticipatamente.
T.

Credo si sia capito che sono io stesso interessato.
mi pare che nei commenti degli utenti ci siano scritti modi per
aggirare questi bug, prova a darci un'occhiata.
Ciao
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Staff di E-Xoopport - 
http://www.e-xoopport.it

 Ciao
io mi sono trovato in una situazione analoga, dovendo consentire il download 
di alcuni filmati dal mio sito: smanettando tra tutti gli esempi riportati 
nei commenti degli utenti e altrove in rete, sono riuscito a mettere insieme 
un pezzetto di codice che pare funzionarmi egregiamente, almeno in Mozilla e 
IE6. non ho provato con vecchi IE, ma sinceramente non ne ho grossa 
necessità. ecco quello che ho appiccicato insieme, se dovesse interessare a 
qualcuno:
<?php
function getfile($name, $file){
    $len = filesize($file);
    $filename = basename($file);
    $file_extension = strtolower(substr(strrchr($filename,"."),1));
   //This will set the Content-Type to the appropriate setting for the file
   switch( $file_extension ) {
     case "mov": $ctype="video/quicktime"; break;
     case "avi": $ctype="video/x-msvideo"; break;
     case "wmv": $ctype="video/x-msvideo"; break;
     //The following are for extensions that shouldn't be downloaded 
(sensitive stuff, like php files)
     case "php":
     case "htm":
     case "html":
     case "txt": die("<b>Cannot be used for ". $file_extension ." 
files!</b>"); break;
     default: $ctype="application/force-download";
   }
   //Begin writing headers
   header("Pragma: public");
   header("Expires: 0");
   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   header("Cache-Control: public");
   header("Content-Description: File Transfer");
   //Use the switch-generated Content-Type
   header("Content-Type: $ctype");
   //Force the download
   $header="Content-Disposition: attachment; filename=\"$name\";";
   header($header );
   header("Content-Transfer-Encoding: binary");
   header("Content-Length: ".$len);
   @readfile($file);
   exit;
}
?>