Seite 1 von 1

DBFS Download Modul V 1.3

Verfasst: Mo 23. Apr 2007, 01:30
von wayfearer
Hallo Leute,

ich habe mal ein klaines Download Modul geschrieben welches Dateien aus dem Stammordner des DBFS auliest, nach ID's sortiert und dann mit Icons, Name, Beschreibung und Größe in einer Tabelle ausspuckt.

Zur Zeit ist es sehr einfach gehalten und wird noch weiterentwickelt. Anregungen und Hilfe ist Willkommen !

Ein Zip Archiv mit den Icons findet ihr hier:
http://www.marcelbensch.de/upload/downloads/icons.zip

Das Modul hat nur einen Output Bereich da es zur Zeit ja lediglich die Dateien ausliest:

Output:

Code: Alles auswählen

<?php
/*****************************************************************************\
 * Downloadmodul für Datenbanksystem
 * -------------------------------------------------------------------------
 * written by       : Marcel Bensch @: info@marcelbensch.de
 * last modified   : 2007-22-04
\*****************************************************************************/
$fileicon  = array(
                 '*'    => 'images/file.gif',
                 'bz2'  => 'images/rarfile.gif',
                 'c'    => 'images/cfile.gif',
                 'cpp'  => 'images/cppfile.gif',
                 'doc'  => 'images/docfile.gif',
                 'exe'  => 'images/exefile.gif',
                 'h'    => 'images/hfile.gif',
                 'htm'  => 'images/htmfile.gif',
                 'html' => 'images/htmfile.gif',
                 'gif'  => 'images/imgfile.gif',
                 'gz'   => 'images/zipfile.gif',
                 'jpg'  => 'images/imgfile.gif',
                 'js'   => 'images/jsfile.gif',
                 'm'    => 'images/mfile.gif',
                 'mp3'  => 'images/mpgfile.gif',
                 'mpg'  => 'images/mpgfile.gif',
                 'pdf'  => 'images/pdffile.gif',
                 'png'  => 'images/imgfile.gif',
                 'ppt'  => 'images/pptfile.gif',
                 'rar'  => 'images/rarfile.gif',
                 'swf'  => 'images/swffile.gif',
                 'txt'  => 'images/txtfile.gif',
                 'xls'  => 'images/xlsfile.gif',
                 'zip'  => 'images/zipfile.gif',
                 );
            

// Datenbank abfragen ----------------------------------

$sql = "SELECT filename, description, filetype, size, dirname FROM con_upl WHERE dirname = 'dbfs:/' OR dirname LIKE 'dbfs:/%' OR dirname = 'downloads/' OR dirname LIKE 'downloads/%' ORDER BY idupl";
$db->query($sql);
//Tabelle und Header generieren ------------------------

echo '<table width="600" cellspacing="5"><tr style="color:white; background-color:#00377d; font-face:verdana; size: 10pt; font-weight:bold;">
<td>&nbsp;Typ&nbsp;</td>
<td>&nbsp;Name&nbsp;</td>
<td>&nbsp;Beschreibung&nbsp;</td>
<td>&nbsp;Gr&ouml;&szlig;e&nbsp;</td>
</tr>';

// Tabelle mit Daten füllen ---------------------------
while ($db->next_record()) {
$filename = $db->f('filename');
$description = $db->f('description');
$description = urldecode($description);
$filetype = $db->f('filetype');
$size_ = $db->f('size');
$size = round($size_/1000, 2);
$dir = $db->f('dirname');

if ($size >= 1000) { $size = round($size/1000, 2); $printsize = $size.'&nbsp;MB'; }
else { $printsize = $size.'&nbsp;kb';}

if ($dir == 'dbfs:/') {
$linktarget = 'dbfs.php?file=dbfs:/';
} else { $linktarget = 'uploads/'.$dir; }

echo '<tr><td valign="top"><img src="'.$fileicon[$filetype].'"/></td>
     <td valign="top"><a href="'.$linktarget.$filename.'">'.$filename.'</a></td>
     <td valign="top">'.$description.'</td>
     <td valign="top">'.$printsize.'</td>     ',"\n";
}
echo '</tr></table>';
$db->free();

?> 
Bis dahin mal,

Wayfearer

------------------- EDIT ------------------------------
Geänderte Version 1.1:

- Listet jetzt auch Downloads aus dem Verzeichnis uploads/download auf (Wegen Problem bei Dateien über 8 MB - diese können hier platziert werden)

- Problem bei der Ausgabe von Dateibeschreibung behoben

- Dateigröße wird Variabel in kb oder MB angegeben

------------------- EDIT 2 ------------------------------
Geänderte Version 1.2:

- Listet jetzt alle Downloads aus upload/Download auf auch welche, die in einem Unterverzeichnis von Downloads liegen.

- Verzeichniserkennung verbessert

Verfasst: So 4. Nov 2007, 18:01
von Jamest
Hi wayfearer,

ich hab es gerade mal getestet, aber leider geht die verlinkung auf die dbfs dateien ins leere.

liegt es daran das ich mod rewrite nutze?

hier findest du den bereich:

http://dev.recht-und-vertrag.de/en/down ... loads.html

grüße

Jamest

Verfasst: So 4. Nov 2007, 19:20
von wosch
Jamest hat geschrieben:liegt es daran das ich mod rewrite nutze?
Martin, das liegt daran das @wayfearer eine Verzeichnis-Struktur nutzt die nicht dem Contenido-Standard entspricht.

Du solltest bei einem Modul bleiben, x-Versuche mit unterschiedlichen Modulen bringt x+1 Fehler!!!

Was macht eigentlich a**x oder *eh, nix mehr damit am Hut ???

Verfasst: Mo 5. Nov 2007, 11:06
von wayfearer
dazu nur:

das modul wurde unter der 4.6.2 entwickelt und da scheint die struktur anders gewesen zu sein. ich hatte es so ja genutzt und es lief auch. es müssen gewiss nur hier und da pfade angepasst werden ..


mfg,

way

Verfasst: Mo 5. Nov 2007, 11:23
von wayfearer
So sollte es gehen:
modul Output Version 1.3:

Code: Alles auswählen

<?php
/*****************************************************************************\
 * Downloadmodul für Datenbanksystem version 1.3
 * -------------------------------------------------------------------------
 * written by       : Marcel Bensch @: info@marcelbensch.de
 * last modified   : 2007-11-05
\*****************************************************************************/
$fileicon  = array(
                 '*'    => 'images/file.gif',
                 'bz2'  => 'images/rarfile.gif',
                 'c'    => 'images/cfile.gif',
                 'cpp'  => 'images/cppfile.gif',
                 'doc'  => 'images/docfile.gif',
                 'exe'  => 'images/exefile.gif',
                 'h'    => 'images/hfile.gif',
                 'htm'  => 'images/htmfile.gif',
                 'html' => 'images/htmfile.gif',
                 'gif'  => 'images/imgfile.gif',
                 'gz'   => 'images/zipfile.gif',
                 'jpg'  => 'images/imgfile.gif',
                 'js'   => 'images/jsfile.gif',
                 'm'    => 'images/mfile.gif',
                 'mp3'  => 'images/mpgfile.gif',
                 'mpg'  => 'images/mpgfile.gif',
                 'pdf'  => 'images/pdffile.gif',
                 'png'  => 'images/imgfile.gif',
                 'ppt'  => 'images/pptfile.gif',
                 'rar'  => 'images/rarfile.gif',
                 'swf'  => 'images/swffile.gif',
                 'txt'  => 'images/txtfile.gif',
                 'xls'  => 'images/xlsfile.gif',
                 'zip'  => 'images/zipfile.gif',
                 );
           

// Datenbank abfragen ----------------------------------

$sql = "SELECT filename, description, filetype, size, dirname FROM ".$cfg['tab']['upl']." WHERE dirname = 'dbfs:/' OR dirname LIKE 'dbfs:/%' OR dirname = 'downloads/' OR dirname LIKE 'downloads/%' ORDER BY idupl";
$db->query($sql);
//Tabelle und Header generieren ------------------------

echo '<table width="600" cellspacing="5"><tr style="color:white; background-color:#00377d; font-face:verdana; size: 10pt; font-weight:bold;">
<td>&nbsp;Typ&nbsp;</td>
<td>&nbsp;Name&nbsp;</td>
<td>&nbsp;Beschreibung&nbsp;</td>
<td>&nbsp;Gr&ouml;&szlig;e&nbsp;</td>
</tr>';

// Tabelle mit Daten füllen ---------------------------
while ($db->next_record()) {
$filename = $db->f('filename');
$description = $db->f('description');
$description = urldecode($description);
$filetype = $db->f('filetype');
$size_ = $db->f('size');
$size = round($size_/1000, 2);
$dir = $db->f('dirname');

if ($size >= 1000) { $size = round($size/1000, 2); $printsize = $size.'&nbsp;MB'; }
else { $printsize = $size.'&nbsp;kb';}

$regex = "/^dbfs:\//";
if (preg_match($regex, $dir)) {
$linktarget = 'dbfs.php?file=dbfs:/';
} else { $linktarget = 'upload/'.$dir; }

echo '<tr><td valign="top"><img src="'.$fileicon[$filetype].'"/></td>
     <td valign="top"><a href="'.$linktarget.$filename.'">'.$filename.'</a></td>
     <td valign="top">'.$description.'</td>
     <td valign="top">'.$printsize.'</td>     ',"\n";
}
echo '</tr></table>';
$db->free();

?> 

Das problem war dass er das verzeichnis nicht richtig erkannt hat, da du im DBFS ein unterverzeichnis hast. jetzt geht es hoffentlich, habe das jetzt mit einer regular_expression überprüft ...


Mfg,

Way

Verfasst: Mo 5. Nov 2007, 15:29
von Jamest
Hi Wayfearer,

danke schonmal das du dich mir an nimmst ;-)

Ich habe das Modul gerade mal getestet, jetzt zeigt sich nur eine weisse Seite, du kannst gern bei dem oben geposteten Link schauen.

Grüße

Jamest

Verfasst: Mo 5. Nov 2007, 15:32
von wayfearer
Probiers hiermit:

Code: Alles auswählen

<?php
/*****************************************************************************\
 * Downloadmodul für Datenbanksystem version 1.3
 * -------------------------------------------------------------------------
 * written by       : Marcel Bensch @: info@marcelbensch.de
 * last modified   : 2007-11-05
\*****************************************************************************/
$fileicon  = array(
                 '*'    => 'images/file.gif',
                 'bz2'  => 'images/rarfile.gif',
                 'c'    => 'images/cfile.gif',
                 'cpp'  => 'images/cppfile.gif',
                 'doc'  => 'images/docfile.gif',
                 'exe'  => 'images/exefile.gif',
                 'h'    => 'images/hfile.gif',
                 'htm'  => 'images/htmfile.gif',
                 'html' => 'images/htmfile.gif',
                 'gif'  => 'images/imgfile.gif',
                 'gz'   => 'images/zipfile.gif',
                 'jpg'  => 'images/imgfile.gif',
                 'js'   => 'images/jsfile.gif',
                 'm'    => 'images/mfile.gif',
                 'mp3'  => 'images/mpgfile.gif',
                 'mpg'  => 'images/mpgfile.gif',
                 'pdf'  => 'images/pdffile.gif',
                 'png'  => 'images/imgfile.gif',
                 'ppt'  => 'images/pptfile.gif',
                 'rar'  => 'images/rarfile.gif',
                 'swf'  => 'images/swffile.gif',
                 'txt'  => 'images/txtfile.gif',
                 'xls'  => 'images/xlsfile.gif',
                 'zip'  => 'images/zipfile.gif',
                 );
           

// Datenbank abfragen ----------------------------------

$sql = "SELECT filename, description, filetype, size, dirname FROM ".$cfg['tab']['upl']." WHERE dirname = 'dbfs:/' OR dirname LIKE 'dbfs:/%' OR dirname = 'downloads/' OR dirname LIKE 'downloads/%' ORDER BY idupl";
$db->query($sql);
//Tabelle und Header generieren ------------------------

echo '<table width="600" cellspacing="5"><tr style="color:white; background-color:#00377d; font-face:verdana; size: 10pt; font-weight:bold;">
<td>&nbsp;Typ&nbsp;</td>
<td>&nbsp;Name&nbsp;</td>
<td>&nbsp;Beschreibung&nbsp;</td>
<td>&nbsp;Gr&ouml;&szlig;e&nbsp;</td>
</tr>';

// Tabelle mit Daten füllen ---------------------------
while ($db->next_record()) {
$filename = $db->f('filename');
$description = $db->f('description');
$description = urldecode($description);
$filetype = $db->f('filetype');
$size_ = $db->f('size');
$size = round($size_/1000, 2);
$dir = $db->f('dirname');

if ($size >= 1000) { $size = round($size/1000, 2); $printsize = $size.'&nbsp;MB'; }
else { $printsize = $size.'&nbsp;kb';}

$regex = "/^dbfs:\//";
if (preg_match($regex, $dir)) {
$linktarget = 'dbfs.php?file='.$dir;
} else { $linktarget = 'upload/'.$dir; }

echo '<tr><td valign="top"><img src="'.$fileicon[$filetype].'"/></td>
     <td valign="top"><a href="'.$linktarget.$filename.'">'.$filename.'</a></td>
     <td valign="top">'.$description.'</td>
     <td valign="top">'.$printsize.'</td>     ',"\n";
}
echo '</tr></table>';
$db->free();

?> 
mfg,

Wayfearer

Verfasst: Mo 5. Nov 2007, 16:28
von Jamest
Perfekt, das funktioniert nun tadellos. :-)

Ich danke dir