Hallo,
Hab ein Problem…
Ich muss irgend wie machen das einen Ordner max. 5 MB drin hat …nun kp wie ich das mache weil die Dateien die dort sind, werden manchmal überschrieben…und umbenant
Ich würde überprüfen ob die alten Dateien und die neue Datei, die gerade hochgeladen wurde, zusammen mehr als 5MB groß sind. Wenn dies der Fall ist: Fehler ausgeben. Ansonsten die Datei ins Verzeichnis kopieren.
ne es hat mehrere Dateien drin bis zu eh 1000 kp… und die dürfen 5 MB nicht überschreiten…
Moin,
hummer hat dir den Weg schon gewiesen - eine andere Ordnerfunktion, die den Speicherplatz ausgibt, ist mir auch nicht bekannt.
Ich persönlich würde aber immer noch eine (oder pro Verzeichnis) *.txt-Datei anlegen, die z.B. so aussehen könnte:
Ordner1|{Ordnergröße}
Ordner2|{Ordnergröße}
...
Natürlich hat man dann einmal die Arbeit ein Script zu schreiben, dass die Ordnergrößen einliest, was ja auch den Server beansprucht, aber das kann man ggf. per Cronjob um eine Zeit machen, wo eh die meisten Leute Matrazenhorchdienst veranstalten.
Das schöne dann daran ist, dass man die errechnete Ordnergröße hat und beim Upload diese Auslesen kann und so etwas wie:
(Pseudocode)
if((filesize($uploaddatei)+{Ordnergröße})>5MB) { // Fehler }
else { // Upload bzw. anderes Verzeichnis testen }
basteln und natürlich beim Löschen kann man beim Löschlink logischerweise die Dateigröße vom Ganzen abziehen.
Ich würde aber um das Ganze auch wirklich ausgereift laufen zu lassen, denn Cronjob 1x wöchentlich oder so durchlaufen lassen Kann ja auch sein, dass weitere Ordner hinzukommen, die dann auch gelistet werden sollten.
MfG
myPages
Hab das jetzt so realisiert:
Es wird zuerst die Größe des Verzeichnisses berechnet, danach geprüft, ob die neue Datei + Ordnergröße 5MB überschreiten.
[code]<?php
$maxSize = 5242880;
$size = 0;
$dir = “./dateien”;
$handle = opendir($dir);
while($datei = readdir($handle)) {
if(!preg_match("!(.|…|.htaccess)$!", $datei)) {
$size += filesize($dir."/".$datei);
}
}
if(isset($_POST[‘submit’])) {
$totalSize = $_FILES[‘datei’][‘size’] + $size;
if($totalSize > $maxSize) {
echo “
Fehler: Max. 5MB!
\n”;} else {
if(move_uploaded_file($_FILES[‘datei’][‘tmp_name’], $dir."/".$_FILES[‘datei’][‘name’])) {
echo “
Datei hochgeladen!
\n”;} else {
echo “
Fehler beim Hochladen
\n”;}
}
}
if(isset($totalSize) AND $totalSize > $maxSize) {
$sizeDiff = $totalSize - $maxSize;
echo “
”.$sizeDiff." Bytes zu viel!
\n";} else if(isset($totalSize)) {
echo “
Bereits hochgeladen: “.$totalSize.” von “.$maxSize.” Bytes
\n”;} else {
echo “
Bereits hochgeladen: “.$size.” von “.$maxSize.” Bytes
\n”;}
?>
hmm ich schau mal…thx …
Danke es geht !!! …
Jetzt muss ich nur noch machen das es das nicht übersteigt …
tut es doch auch nicht
hmm…
Okey…
Danke nochmal …
[size=150]MODÍ …BITTE SCHLIESSEN …[/size]