da mein beitrag unter bs unter zu gehen scheint und es ja jetzt doch php ist, dann hier.
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.
oben über das auskommentierte filesize ging es nicht.
hier ist datei für den download:
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
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 ($datei, 0,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\" /> ";
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> <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
Kommentar