Anbei ein weiteres Downloadmodul mit folgenden Eigenschaften:
- Alphabetische Sortierung
- Anzeige Ordner
- Anzeige Symbolic Links
- Anzeige Dateien und Ordner auch mit Sonderzeichen
- Anzeige Filetyp und Größe
- 2 spaltiges Layout
Alle Elemente werden aus dem Dateisystem gelesen und in einem Array sortiert.
Input:
Code: Alles auswählen
?><?php
$cms_dirname = "CMS_VALUE[1]";
#Choose folder
echo '
<table cellpadding="0" cellspacing="0" border="0">
<tr><td class="text_medium" style="padding:5px">
Pfad, relativ zu DOCUMENT_ROOT '.$_SERVER[DOCUMENT_ROOT].'
<input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]" style="width:200px">
<input type="image" src="images/submit.gif">
</td></tr>
</table>';
?><?php
Code: Alles auswählen
<?php
$dirname = "CMS_VALUE[1]";
$verzeichnisse = array();
$dateien = array();
$links= array();
$fileicon = array(
'' => 'upload/images/file.gif',
'*' => 'upload/images/file.gif',
'bz2' => 'upload/images/rarfile.gif',
'c' => 'upload/images/cfile.gif',
'cpp' => 'upload/images/cppfile.gif',
'doc' => 'upload/images/docfile.gif',
'exe' => 'upload/images/exefile.gif',
'h' => 'upload/images/hfile.gif',
'htm' => 'upload/images/htmfile.gif',
'html' => 'upload/images/htmfile.gif',
'gif' => 'upload/images/imgfile.gif',
'gz' => 'upload/images/zipfile.gif',
'jpg' => 'upload/images/imgfile.gif',
'js' => 'upload/images/jsfile.gif',
'm' => 'upload/images/mfile.gif',
'mp3' => 'upload/images/mpgfile.gif',
'mpg' => 'upload/images/mpgfile.gif',
'pdf' => 'upload/images/pdffile.gif',
'png' => 'upload/images/imgfile.gif',
'ppt' => 'upload/images/pptfile.gif',
'rar' => 'upload/images/rarfile.gif',
'swf' => 'upload/images/swffile.gif',
'txt' => 'upload/images/txtfile.gif',
'xls' => 'upload/images/xlsfile.gif',
'zip' => 'upload/images/zipfile.gif',
'dir' => 'upload/images/folder.gif',
'lnk' => 'upload/images/lnkfile.gif'
);
$liste = '';
if ($_REQUEST['d'])
{
$subdir = str_replace("..","",base64_decode(rawurldecode($_REQUEST['d'])));
$dirname.= $subdir;
}
if (is_dir($dirname))
//if ($dirname)
{
//Herkunft
$subdir_path = '>> <a href="'.$_SERVER['PHP_SELF'] . '?idart=' . $_REQUEST['idart'] . '&idcat=' . $_REQUEST['idcat'] . '">Home </a>';
if ($subdir)
{
$ptmp = explode("/", $subdir);
$sp = array();
foreach($ptmp as $item)
{
if ($item)
{
$sp[] = $item;
$subdir_path.= ' - <a href="' . $_SERVER['PHP_SELF'] . '?idart=' . $_REQUEST['idart'] . '&idcat=' . $_REQUEST['idcat'] . '&d=' . rawurlencode(base64_encode('/' . implode('/', $sp))) . '">' . $item . '</a>';
}
}
}
}
echo '
<span style="margin: 10px 0px;">'.$subdir_path.'</span><br><br>
<table width=100%>
';
$lese_dir = opendir($dirname);
while($datei = readdir($lese_dir)) {
if($datei != '..' && $datei != '.' && is_dir($dirname.'/'.$datei)) array_push($verzeichnisse, $datei);
}
closedir($lese_dir);
$lese_dir = opendir($dirname);
while($datei = readdir($lese_dir)) {
if(is_file($dirname.'/'.$datei)) array_push($dateien, $datei);
if(is_link($dirname.'/'.$datei)) array_push($links, $datei);
}
closedir($lese_dir);
natcasesort($verzeichnisse);
$verzeichnisse = array_values($verzeichnisse);
natcasesort($dateien);
$dateien = array_values($dateien);
natcasesort($links);
$links= array_values($links);
for($i=0; $i<sizeof($verzeichnisse); $i++) {
$uri = $_SERVER['PHP_SELF'] . '?idart=' . $_REQUEST['idart'] . '&idcat=' . $_REQUEST['idcat'] . '&d=' . rawurlencode(base64_encode($subdir.'/'.$verzeichnisse[$i]));
if ($i%2==0) {
$liste .= '<tr><td><img src='.$fileicon[dir].' alt=icon></td><td width=48%><a href='.$uri.'>'.$verzeichnisse[$i].'</a></td>';} else {
$liste .= '<td><img src='.$fileicon[dir].' alt=icon></td><td width=48%><a href='.$uri.'>'.$verzeichnisse[$i].'</a></td></tr>';}
if ((($i+1)%2==1) AND (($i+1)==sizeof($verzeichnisse))) {
$liste .= '<td> </td><td width=48%> </td></tr>';
}
}
for($i=0; $i<sizeof($links); $i++) {
if ($i%2==0){
$liste .= '<tr><td><img src='.$fileicon[lnk].' alt=link></td><td width=48%><a href='.readlink($dirname.'/'.$links[$i]).' target=_blank>'.$links[$i].'</a></td>';}else {
$liste .= '<td><img src='.$fileicon[lnk].' alt=link></td><td width=48%><a href='.readlink($dirname.'/'.$links[$i]).' target=_blank>'.$links[$i].'</a></td></tr>';}
if ((($i+1)%2==1) AND (($i+1)==sizeof($links))) {
$liste .= '<td> </td><td width=48%> </td></tr>';
}
}
for($i=0; $i<sizeof($dateien); $i++) {
$info = pathinfo($dirname.'/'.$dateien[$i]);
$endung = $info['extension'];
$groesse = filesize($dirname.'/'.$dateien[$i]);
if($groesse < 1024) {
$einheit = 'Byte';
} else if($groesse >= 1024 && $groesse < 1048576) {
$groesse = round($groesse / 1024);
$einheit = 'KB';
} else {
$groesse = round($groesse / 1024 / 1024);
$einheit = 'MB';
}
$groesse = number_format($groesse, 0, ',', '.');
$affe = $dirname.'/'.$dateien[$i];
$encoded = implode("/", array_map("rawurlencode", explode("/", $affe)));
if ($i%2==0){
$liste .= '<tr><td><img src='.$fileicon[$endung].'> </td><td width=48%><a href='.$encoded.' target=_new>'.htmlentities($dateien[$i]).'</a> ('.$groesse.' '.$einheit.')</td>';} else {
$liste .= '<td><img src='.$fileicon[$endung].'> </td><td width=48%><a href='.$encoded.' target=_new>'.htmlentities($dateien[$i]).'</a> ('.$groesse.' '.$einheit.')</td></tr>';}
if ((($i+1)%2==1) AND (($i+1)==sizeof($dateien))) {
$liste .= '<td> </td><td width=48%> </td></tr>';
}
}
//echo '<table>';
echo $liste;
echo '</table>';
php?>