Oldperl, bitte sei so lieb und antworte ein Spur zurückhaltender - wir freuen uns über jeden Beitrag. Es wäre doch schade, wenn uns Bugs entgehen, weil sich der Poster nicht mehr traut ...
Genaugenommen hat Luigi recht (und es gab auch schon länger immer mal wieder das Problem, dass die Dateigröße in der Dateiverwaltung mit 0 angezeigt wird).
Die 'include.upl_files_overview.php' sieht so aus:
Code: Alles auswählen
$sql="SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='$client' AND dirname='$path'";
$db->query($sql);
while($db->next_record()){
if (!is_file($cfgClient[$client]["path"]["upload"].$path.$db->f("filename")))
{
//echo "delete since ".$cfgClient[$client]["path"]["upload"].$path.$db->f("filename")." doesnt exist";
$idupl = $db->f("idupl");
$sql = "DELETE FROM ".$cfg["tab"]["upl"]." WHERE idupl='$idupl'";
$db2->query($sql);
} else {
$filelist[$db->f("filename")]=$db->f("description");
$filesize[$db->f("filename")]=$db->f("size");
}
}
$handle = opendir(".");
$upl_protected = explode(",",$cfgClient['upl']['protected']);
while ($file = readdir($handle)) {
if ($path.$file."/" == $cfgClient[$client]["path"]["upload"].$path.$con_cfg['PathFrontendTmp']) {
} else {
if(is_dir($file)) {
$dirlist[] = $file;
}
}
if(is_file($file) && !isset($filelist[$file])) {
savefile($path,$file);
//set the filelist, description is emty
$filelist[$file] = "";
$filesize[$file] = filesize($cfgClient[$client]['upl']['path'].$path.$file);
}
}
closedir($handle);
Die erste Abfrage ermittelt die gespeicherten Daten aus der Datenbank (und die Filesize
ist in <Prefix>_upl gespeichert). Die zweite Abfrage (auf dem Server) ermittelt
neue Dateien, die bisher nicht in der DB enthalten sind.
Wenn also bei der Ermittlung oder der Speicherung der Dateigröße bei Erzeugung des Dateiverweiseses in der DB ein Fehler auftritt, kann sie tatsächlich 0 sein, obwohl die anderen Daten stimmen.
Ich gebe Dir aber insofern recht, als das man prüfen sollte, warum bei savefile($path,$file); u.U. die Dateigröße nicht abgespeichert wird. Ich bin aber der Meinung, dass dieser Fehler in V4.4.5 bereits behoben war - kann aber gerne mal jemand einen Blick werfen.
EDIT: Die Funktion savefile in functions.upl.php enthält dazu diese Zeile:
Code: Alles auswählen
$filesize = @filesize($cfgClient[$client]['upl']['path'].$path.$file);
U.U. kann bei der Ermittlung ein Fehler auftreten, durch das @ wird er unterdrückt - kann also schon passieren, dass da 0 raus kommt. @Luigi kommt das denn auch bei neuen Uploads vor? Welche C-Version?
Gruß
HerrB