Einzelnen Beitrag anzeigen
  #6 (permalink)  
Alt 06-10-2003, 22:00
mister_x1
 Member
Links : Onlinestatus : mister_x1 ist offline
Registriert seit: Nov 2002
Ort: Weimar
Beiträge: 474
mister_x1 ist zur Zeit noch ein unbeschriebenes Blatt
mister_x1 eine Nachricht über ICQ schicken
Standard

also jungs, nachdem ich sämtliche threads durchforscht und meine bücher gewälzt habe, bin ich fast fertig damit. das ein oder andere problem taucht dennoch auf. wenn ich ganz fertig bin, poste ich die lösung.
zuerst habe ich das problem, wie ich in folgender fkt. noch die dateigröße hinein bekomme.
PHP-Code:
function read_dir_file($folder){   
    
    
    
                
//$read_dir = "exchange";
                
$folder "exchange/".$folder;
            echo 
"folder=".$folder."<br>";
            if (
is_dir($folder)){

                
$dir opendir($folder);
                
$list = array();//leeres array für dateien
                
$filelist = array(); //leeres array für codierte filenamen
                    
while ($file=readdir($dir))//liest ordner aus
                    
{
                        
                        
                        if (
$file!='.' AND $file!='..'){
                            
                            
array_push($list,basename($file));//fügt array(list) dateien als werte hinzu
                             
sort($list);//sortiert array aufsteigend
                             
                         
                            
                        
       
                                          
}
                                        }
                                        for (
$i=0$i<=count($list);$i++){
                        while(list (
$key$datei) = each ($list)){
                            
                            
$icon strtolower(substr(strrchr($datei,"."),1)); //strtolower=wandelt in kleinbuchstaben, substr=liefert rest nach erstem zeichen, strrchr=liefert rest nach letzem vorkommen vom punkt
                            //$size = filesize($datei,$dir);
                            
$type $icon;//für Hinweis auf Dateityp über die endung
                            
                            
$name substr ($datei0,strrpos($datei".")); //liefert string vorm letzten punkt als name zwischen a-tags
                            
                            //echo "name= ".$name;
                            
                            
if ($icon != "doc" && $icon != "pdf" && $icon != "rar" && $icon != "zip" && $icon != "exe" && $icon != "php" && $icon != "jpg" && $icon != "gif"){
                                
$icon "txt";
                            }
                            
                            
//$link = array_push($filelist, $datei);
                            //$link = $link - 1;
                            
                            //echo "name = ".$filelist[$link];
                            
if ($icon != "php"){
                            echo 
"<img src=\"images/".$icon.".gif\" width=\"18\" height=\"19\" border=\"0\" />&nbsp;";
                            echo 
"<a href=\"#\" class=\"more\" onfocus=\"this.blur()\" alt=\"Download\" title=\"Download\" onclick=\"openWindow('download.php?folder=".$folder."&datei=".$datei."&type=".$type."','1','width=800,height=500')\">";
                                echo 
$name."</a>&nbsp; <span class=\"normklein\">(".$type.", ".$size.")</span><br><br>";
                            }
                            
                        } 
$i++;  
                    } 
                    
//print_r($filelist);
                    //print_r($link);
                    
closedir($dir);
                    
                   }else{
                    echo 
"shit";
                }
                        
//return $list;
    

oben über das auskommentierte filesize ging es nicht.

hier ist datei für den download:
PHP-Code:
<?php 

$datei  
$_GET['datei'];
$folder $_GET['folder'];
$type   $_GET['type'];
    
    
    
$content_type = array(     "doc" => "application/msword",
                
"rar" => "application/octet-stream",
                
"zip" => "application/zip",
                
"exe" => "application/octet-stream",
                
"pdf" => "application/octet-stream",
                
"txt" => "text/plain",
                
"jpg" => "images/jpeg",
                
"gif" => "images/gif");
    
    
    
    
$save $datei;
    
$now  gmdate('D, d M Y H-i-S').'GMT';
    
    
header("Content-Type: ".$content_type[$type]."");
      
//header("Content-Length: ".$data."");
    
header("Expires: 0");
    
header("Content-Transfer-Encoding: binary");
    
    if (
substr_count(strtolower($_SERVER["HTTP_USER_AGENT"]), "ie") != 0){ //für IE
         
        
header("Content-Disposition: inline; filename=".$save."");
        
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
        
header("Pragma: public");
    }else{
        
header("Content-Disposition: attachment; filename=".$save."");
        
header("Pragma: no-cache");  
    }
    

    
//readfile($datei);
    
$file fopen($datei,"rb");
    
$data fread($file,filesize($datei));
    
    echo 
$data;
    
fclose($file);
?>
hier habe das problem, dass ich die größe im header mit übergeben will, von mir aus als $_GET-parameter aus der vorhergehenden fkt.

viel wichtiger ist mir jedoch die anpassung der header an möglichst viele browser.

vielleicht sollte ich kurz erklären was passiert. zuerst noch etwas kurioses:
eigentlich ist der header für jpg's und gif's image/jpeg usw., schreibe ich aber images/jpg, werden die pics zum download angeboten, andernfalls geöffnet, komisch.
okay:
MSIE will alles downloaden bis auf *.doc, *.txt, *.pdf, die werden geöffnet
opera will alles downloaden bis auf *.pdf, *.txt, die werden geöffnet
mozilla ist top, will alles downloaden
NN downloadet alles ausser pics und pdf, öffnet diese. problem bei NN, er hängt an alle downloads .php an, wenn ich die endungen entferne, sind die dateien aber trotzdem okay.

grundsätzliche möchte ich aber alles downloaden.
wie kann ich dem entgegenkommen, vielleicht hat der ein oder andere noch nen tipp.

THX FOR ALL
__________________
musse rühre, musse probiere=>iss a pulsgeber !
Mit Zitat antworten