Uploadverzeichnisse

Gesperrt
günter
Beiträge: 3
Registriert: So 3. Nov 2002, 18:05
Kontaktdaten:

Uploadverzeichnisse

Beitrag von günter »

Gibt es eine Möglichkeit, die Grössen der Uploadverzeichnisse zu beschränken?

Günter
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

nicht so ohne weiteres... du müsstest die Größeninformation beim Upload bereits irgendwo zwischenspeichern um später rauszubekommen, wieviel bisher in dem Verzeichnis liegt. Also ein zusätzlicher Table in con_upl z.b.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Beitrag von idea-tec »

die größe von verzeichnissen, bzw. webspace kann man mit dem (auf einigen servern installiertem) Tool "quota" erledigen.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

stimmt... quota setzen oder - wenn vorhanden - kannst du mit dem Tool "du -m" jederzeit die Größe eines Verzeichnisses in Megabyte ausgeben lassen. Das Ergebnis parsen und vergleichen. Aber beide Tools kannst du meist nur als Root einsetzen und beide gehören zu Linux/Unix
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
günter
Beiträge: 3
Registriert: So 3. Nov 2002, 18:05
Kontaktdaten:

Beitrag von günter »

... "du -m" oder "quota" kann ich nicht einsetzen, muss mal meinen Hoster fragen, ob er mal die Verzeichnisse damit einstellt.
Ich denke aber, dass die Lösung von Sven777b vielleicht für die Zukunft besser ist, mit php/contendio das Uploaden zu regeln. Ich bin schon auf einige Php - Fragmente in anderen Foren gestossen, die php-uploads machen. Vielleicht klappts damit , wenn ich diese in contenido einbaue und anpasse.

Mal sehen, wenn´s geht melde ich mich wieder.

Günter.
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

So geht es... :

ich habe die erstere Lösung von mir mal umgesetzt und sie funktioniert auch. Allerdings musst du dazu eine Datei editieren.

die Datei /contenido/inc/upl_upload_form.inc.php wird komplett ersetzt damit:

Code: Alles auswählen

<?
        //********** Fileupload with form *******
        echo "  <form name=upload action=\"$formaction\" method=post enctype=\"multipart/form-data\">";
 	        $sess->hidden_session();
		echo "  <INPUT type=hidden name=upltype VALUE=\"$upltype\">";
        echo "  <TABLE cellpadding=$cellpadding cellspacing=$cellspacing border=$border>
                <TR><TD class=head colspan=3 width=600>$text</TD></TR>
                <TR><TD class=head>".$lngUpl["file"]."</TD><TD colspan=2 class=content>";
        echo "    <INPUT type=file size=50 maxlength=100000 name=\"userfile\" accept=\"*\">";
        echo "  </TD></TR><TR><TD class=head>".$lngUpl["description"]."</TD><TD class=content>";
        echo "    <INPUT type=text name=description VALUE=\"\" SIZE=50>";
        echo "    <INPUT type=hidden name=uplfiletype VALUE=\"".$cfgClient[$client]["filetype"]["$upltype"]."\">";
        echo "  </TD><TD class=content>";
        echo "    <INPUT type=image src=\"".$cfgPathImg."but_ok.gif\" border=0>";
        echo "  </TD></TR></TABLE>";
        echo "  </form>";
        $userfile_name = $HTTP_POST_FILES['userfile']['name'];
        $source = $HTTP_POST_FILES['userfile']['tmp_name'];
        $target = "$path". $userfile_name;
        $size = $HTTP_POST_FILES['userfile']['size'];
        $dirsize = $size;
	if($cfgClient[$client]['maxsize'][$upltype] > 0){
		$db->query("SELECT size FROM $cfgTab_upl WHERE idclient='$client' AND dirname='$upltype'");
		while( $db->next_record() ){ $dirsize += $db->f("size"); }
	}
        if ($source != "none" AND $source != "") {
                if ( $dirsize > ($cfgClient[$client]['maxsize'][$upltype] * 1048576) ) {
			echo "Uploadmaximum von ".$cfgClient[$client]['maxsize'][$upltype]." Mb erreicht<BR>\n";
                                                unlink($source);
                } elseif ( !copy($source, $target) ) {
                        echo("failed to copy \"$source\" nach \"$target\"<br>\n");
                } else {
                       	$sql = "SELECT idupl FROM $cfgTab_upl WHERE idclient='$client' AND filename='$userfile_name' AND dirname='$upltype' AND filetype='".$cfgClient[$client]["filetype"]["$upltype"]."'";
			$db->query($sql);
			if ($db->next_record()) {
				$sql = "UPDATE $cfgTab_upl SET idclient='$client', filename='$userfile_name', dirname='$upltype', filetype='".$cfgClient[$client]["filetype"]["$upltype"]."', description='$description', size='$size' WHERE idupl='".$db->f("idupl")."'";
				$db->query($sql);
			} else {
				$sql = "INSERT INTO $cfgTab_upl (idclient, filename, dirname, filetype, description, size) VALUES ('$client','$userfile_name','$upltype','".$cfgClient[$client]["filetype"]["$upltype"]."','$description','$size')";
				$db->query($sql);
			}
                }
        }
?>
Anschliessend per phpMyAdmin folgenden SQL-Dump einspielen:

Code: Alles auswählen

ALTER TABLE `con_upl` ADD `size` INT UNSIGNEDDEFAULT '0' NOT NULL ;
ab sofort wird die Dateigröße in der Datenbank mitgeführt. In der config.php kannst du mit folgender Zeile die jeweiligen Maximumwerte festlegen:

Code: Alles auswählen

$cfgClient[1]["maxsize"]["img"]		    = 10;
du kannst also den Wert für jedes Uploadverzeichnis von jedem Client festlegen (für pdf also ["pdf"] ).
Der Maximalwert wird in Megabyte angegeben. 0 = unlimitiert.

Bei Überschreitung des Maximum wird die Datei nicht kopiert und auch nicht eingetragen - es erscheint eine Warnung.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
detlev
Beiträge: 156
Registriert: Mi 18. Sep 2002, 08:05
Wohnort: Bochum
Kontaktdaten:

Beitrag von detlev »

@ Contenido - Entwickler für Version 4.4 o.ä.

Das halte ich für ein sinnvolles Regulierungswerkzeug.
Zusätzlich zum Gesamtgröße der directorys sollte man vielleicht noch andenken, die filesize der einzelnen upload-Dateien beschränken zu können, damit nicht Riesenbilddateien von unbedarften Redaktueren im Internetauftritt auftauchen.

Gruß
Detlev
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Beitrag von idea-tec »

@detlev
wenn ich nicht komplett vertrottelt bin ist das bereits drinne:
echo " <INPUT type=file size=50 maxlength=100000 name=\"userfile\" accept=\"*\">";
das sollte eine erlaubte Größe von 100 kb darstellen!!!
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
Sven777b
Beiträge: 503
Registriert: Mi 18. Sep 2002, 00:00
Wohnort: Sachsen
Kontaktdaten:

Beitrag von Sven777b »

@idea-tec:

vertrottelt bist du nicht... aber die Eigenschaft maxlength wurde nicht ins neue HtmL übernommen. Will sagen - ältere Browser akzeptieren diese Eigenschaft - neuere hingegen nicht. Um den Upload zu testen habe ich gestern jeweils 500kb-Dateien hochgeladen. Der IE hat keinen Fehler gemeldet. Opera dagegen meldet IMHO das die Datei größer als 100kb ist.
Module zum anschauen:
bei Sven: http://contenido-module.de
bei Pulk : http://spielwiese.pulk.net

Der-Dirigent: http://der-dirigent.de
günter
Beiträge: 3
Registriert: So 3. Nov 2002, 18:05
Kontaktdaten:

Beitrag von günter »

Super, es klappt :D

Ich hab erst Heute Zeit zum Testen . Danke Sven !
Eines, möchte ich noch schnell schreiben, und zwar muss es beim Einfügen der Tabelle so heissen (ein Leerzeichen vor DEFAULT)

Code: Alles auswählen

ALTER TABLE `con_upl` ADD `size` INT UNSIGNED DEFAULT '0' NOT NULL ;
Es stimmt, was Sven schreibt, dass es bei einigen Browsern teilweise mit uploads noch klemmt.

Ein paar Links dazu hab ich schon mal durchgelesen, die über die beiden
Phpfunktionen is_uploaded_file() und move_uploaded_file() handeln.

http://www.php-center.de/de-html-manual ... pload.html und
http://www.dclp-faq.de/q/q-formular-upload-php4.html oder
http://www.dclp-faq.de/q/q-formular-meh ... pload.html
Eppi
Beiträge: 252
Registriert: Di 17. Sep 2002, 16:33
Wohnort: Ilmenau (Thüringen)
Kontaktdaten:

Beitrag von Eppi »

in der nächsten Version wird es die Möglichkeit geben, Den Uploadbereich zu beschränken und die maximale Größe der einzelnen Dateien zu definieren. Die Beschränkung einzelner Verzeichnisse werde ich nicht einbauen.
Ein neues CMS-System:
www.der-dirigent.de
Gesperrt