Newsgroup: it.comp.www.php
Titolo: header non mi mette il nome del file

salve sto usando header per scaricare un file il problema e che il file è
corretto quindi lo scarica bene ma come nome del file da scaricare
mi mi mette il nome dello script php
sia con ie che con mozilla
non so che fare anche perchè ha sempre funzionato quindi bo....
qualche idea ?

 ha scritto nel messaggio 
news:4384b13d$0$7313$4faf...@reader4.news.tin.it...

Il codice è questo
<?
header('Content-type: application ');
$original = path .... nome file // solo per il news group
$file ="file.txt";
header('Content-Disposition: attachment; filename="'.$file.'"');
readfile("$original");
?>

header('Content-type: application ');
è sbagliato
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

Perdona la curiosita', ma stai facendo uno script per lettura
newsgroup?
        // Download, devo forzarlo ed evitare che il file si apra nella
finestra
		//Forzo il salvataggio con un determinato nome
		header("Content-Type: application/force-download;
name=\"".$getfile."\"");
		header("Content-Transfer-Encoding: binary");
	    //	header("Content-Length: $size");
		header("Content-Disposition: attachment; filename=\"".$getfile."\"");
		header("Expires: 0");
		header("Cache-Control: no-cache, must-revalidate");
		header("Pragma: no-cache");
viene da un mio script per gestione newsgroups, vedi pure qui se ti
funziona:
http://www.3bsoft.com/newsgroup_article-200-7.html
clicca sul link a printer.plt in fondo

 ha scritto nel messaggio 
news:1132826254.4...@g44g2000cwa.googlegroups.com...

si funziona.
no devo solo scaricare un file


ho coretto una cosa e funziona perchè è sbagliato cosa devo mettere ?

Prova questa funzione e controlla nche le impostazioni di apache
function dl_file($file){
   //First, see if the file exists
   if (!is_file($file)) { die("<b>404 File not found!</b>"); }
   //Gather relevent info about 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 "pdf": $ctype="application/pdf"; break;
     case "exe": $ctype="application/octet-stream"; break;
     case "zip": $ctype="application/zip"; break;
     case "doc": $ctype="application/msword"; break;
     case "xls": $ctype="application/vnd.ms-excel"; break;
     case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
     case "gif": $ctype="image/gif"; break;
     case "png": $ctype="image/png"; break;
     case "jpeg":
     case "jpg": $ctype="image/jpg"; break;
     case "mp3": $ctype="audio/mpeg"; break;
     case "wav": $ctype="audio/x-wav"; break;
     case "mpeg":
     case "mpg":
     case "mpe": $ctype="video/mpeg"; break;
     case "mov": $ctype="video/quicktime"; break;
     case "avi": $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=".$filename.";";
   header($header );
   header("Content-Transfer-Encoding: binary");
   header("Content-Length: ".$len);
   @readfile($file);
   exit;
}

ho coretto una cosa e funziona perchè è sbagliato cosa devo mettere ?
devi mettere il tipo dopo application (vedi l'esempio di Gianni) se il
tipo di file è sempre lo stesso sennò metti application/download
