Username:blowdow
geschrieben am 13.09.2009 um 14:39 Uhr
|
Hi zusammen
Ich habe mir das Multiuploader-Script runtergeladen und ausprobiert. Soweit funktioniert es prima.
Jedoch würde ich gerne, dass das Script nicht jede einzelne Datei wegen den max-File-Grösse kontrolliert, sondern, dass INSGESAMT die Grösse nicht überschritten werden darf.
z.B:
File 1 = 1 MB
File 2 = 2 MB
File 3 = 5 MB
Max File Size = 6 MB
Das Script sollte nun File 1 + File 2 + File 3 zusammen rechnen = 8 MB. In diesem Beispiel würde es keine Datei uploaden, da insgesamt die MB grösser sind (8 MB), als man darf (6 MB).
Weiss jemand, wie ich das einbauen könnte?
Hier nochmals das ganze Script von Multiuploader:
Script:
<?php
//-----------------------------------------------------------------//
// Konfiguration Anfang
//-----------------------------------------------------------------//
// Pfad zum Bilderverzeichnis, mit / am Ende!
// kann so bleiben wenn bei $URL unterhalb das Verzeichnis auch bilder heisst
$picpfad = 'bilder/';
// URL zum Uploadbilderverzeichnis
$URL = 'http://www.ihre-domain.de/uploader/bilder';
// Anzahl Uploadfelder
$erlaubte_uploads = 5;
// max. Uploadgroesse in KB
$max_upl_size = 10;
// Erlaubte Dateiendungen, Dateiendungen mit Komma trennen und klein schreiben
$arr_erlaube_dateityp = array(gif,jpg,png,zip);
//-----------------------------------------------------------------//
// Konfiguration Ende
//-----------------------------------------------------------------//
// Header ausgeben
echo $output = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadheader.html"));
//-----------------------------------------------------------------//
// Uploadformular
//-----------------------------------------------------------------//
if (!isset($_POST['PICUPLOAD'])) {
// Uploadform ausgeben
uploadformausgabe();
} else {
//-----------------------------------------------------------------//
// Upload ausfuehren
//-----------------------------------------------------------------//
$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);
// Uploaddurchlauf Start
for ($i=0; $i<count($_FILES['UPFILE']['name']); $i++) {
if ($_FILES['UPFILE']['name'][$i] == '') {
continue;
}
// Zeichenfilter
$File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');
// Dateiendung ermitteln
$punkt = strrpos($File, '.');
$laenge = strlen($File);
$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
$dname = substr($File, 0, -($laenge - $punkt - 1));
// Fehlerausgabe wenn Dateiendung nicht erlaubt
if (!in_array($endung, $arr_erlaube_dateityp)) {
fehlerausgabe("Die Dateiendung <b>$endung</b> ist nicht erlaubt");
continue;
}
// Dateigroessencheck
if ($_FILES['UPFILE']['size'][$i] > ($max_upl_size * 1024)) {
$zugross = round($_FILES['UPFILE']['size'][$i]/1024, 2);
fehlerausgabe("Datei zu groß");
continue;
}
switch($_FILES['UPFILE']['error'][$i]) {
case 0:
break;
case 1:
fehlerausgabe("Die Datei ist zu gross");
continue 2;
break;
case 2:
fehlerausgabe("Die Dateigröße übersteigt das erlaubte Limit von $max_upl_size KB");
continue 2;
break;
}
$dateipfad_name = $picpfad.$File;
// Zufallsdateiname erzeugen
$rand_value = randomstring($File);
$newfilenamekompl = "$rand_value.$endung";
$savename = $picpfad.$newfilenamekompl;
// hochgeladene Daeien speichern
if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {
// Zusammenfassen fuer Uploadstatusausgabe
if (isset($arr_erlaube_dateityp) and in_array($endung, $arr_erlaube_dateityp)) {
// Ausgabe anpassen falls noetig
$show_uploadokfiles .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";
}
chmod($savename, 0777);
} else {
fehlerausgabe("Kann Datei nicht speichern");
}
}
if (isset($errors) and count($errors)>0) {
Uploadfehler($errors);
}
if ($show_uploadokfiles != '') {
echo preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadok.html"));
}
if (!file_exists($picpfad)) {
echo "<b>Zielverzeichnis $picpfad nicht gefunden</b><br>";
} elseif (!is_writable($picpfad)) {
echo "<b>Zielverzeichnis $picpfad nicht beschreibar</b><br>";
clearstatcache();
} else {
echo "<a href=\"index.php\">Zum Uploadformular zurück</a>";
}
}
// Footer ausgeben
echo $output = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfooter.html"));
//-----------------------------------------------------------------//
// Zufallszeichen fuer Dateiname
//-----------------------------------------------------------------//
function randomstring($dateiname) {
$dateiname = strtolower(substr(md5(microtime()),0,25));
return $dateiname;
}
//-----------------------------------------------------------------//
// Templateausgabe
//-----------------------------------------------------------------//
function tparser($tmplname) {
$lines = implode("",file($tmplname));
return $lines;
}
//-----------------------------------------------------------------//
// Uploadform
//-----------------------------------------------------------------//
function uploadformausgabe() {
global $erlaubte_uploads, $zeige_uploadrechte, $max_upl_size;
if ($_SERVER['QUERY_STRING'] !== '') {
$action = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
} else {
$action = $_SERVER['PHP_SELF'];
}
$max_upl_size_out = $max_upl_size * 1024;
$dateicount = 0;
for ($i=0; $i<$erlaubte_uploads; $i++) {
$dateicount++;
$uploadrowout .= preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfilerow.html"));
}
$show_uploadlimitationen = zeige_uploadlimits();
$uploadformhtml = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadtable.html"));
echo $uploadformhtml;
}
//-----------------------------------------------------------------//
// Zeige Uploadfehler
//-----------------------------------------------------------------//
function Uploadfehler($errors) {
foreach($errors as $file => $message) {
$show_noupload .="<li> $file: $message.<br>";
}
$show_uploadlimitationen = zeige_uploadlimits();
echo preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfehler.html"));
}
//-----------------------------------------------------------------//
// Uploadlimitationen ausgeben
//-----------------------------------------------------------------//
function zeige_uploadlimits() {
global $arr_erlaube_dateityp, $max_upl_size;
$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);
if ($max_upl_size > 1024) {
$maximum = round(($max_upl_size / 1024), 2) . "MB";
} else {
$maximum = "$max_upl_size KB";
}
return "<b>Dateigrößenlimit</b>: $maximum<br><b>Erlaubte Dateiendungen</b>: $erlaubte_extensionen";
}
//-----------------------------------------------------------------//
// Fehlerausgabe
//-----------------------------------------------------------------//
function fehlerausgabe($message, $delete = false) {
global $errors, $File, $dateipfad_name;
$errors[$File] = $message;
if ($delete == true) {
unlink($dateipfad_name);
}
}
//-----------------------------------------------------------------//
?>
|