Hallo,
wenn man dem Kunden/Besucher erlaubt Dateien hochzuladen ist es sinnvoll auch die Dateigröße zu limitieren.
Das geht mit ssp ganz einfach :)
hier ein Beispiel anhand der Uploadfunktion für Mouspadbeschriftung im Konfiguratorshop
(die rot markierten Teile beschränken die Dateigröße => ist das Bild größer, wird KEIN upload durchgeführt und eine Fehlermeldung ausgegeben)
## Upload durchgeführt: Speichern und in WK-Datei eintragen
my $image = ssp::get_var_form('uploadimage');
my $imagedata = ssp::get_var_form_filedata('uploadimage');
my $imagedirectory = $m_uploaddir;
my $filename = "";
my $kb = 300;
my $byte = $kb*1024;
## Gültige Artikelnummer?
if ($itemid ne $ssp::undefined) {
## Gültiges Bild hochgeladen?
if (length($image) && ($image ne $ssp::undefined)) {
## maximal zulässige Dateigröße?
if (length($imagedata) < $byte) {
my $fileextension = "";
## Versuche gültige Dateiendung zu bestimmen
if ($image =~ /.*(\.[\w\d]+)$/) {
$fileextension = lc($1);
if (!_isExtensionAllowed($fileextension)) {
$html .= qq|<div class="error">$m_text_invalidextension</div>|;
} else {
$filename = "$imagedirectory/" . $ssp::xxsession . "_" . time . $fileextension;
## Zuordnung Artikel <> Bild in WK-Datei eintragen
ssp::cart_write_var("image_$itemid", $filename);
## Datei im Uploadverzeichnis speichern
my $saveto = "$main::catalog_home/$filename";
if (!open( FILEHANDLE, ">$saveto" )) {
main::syserr("konnte Datei nicht anlegen: $!");
}
binmode FILEHANDLE; # Im Binämodus schreiben
print FILEHANDLE $imagedata; # Inhalt in Datei schreiben
close( FILEHANDLE ); # Datei schliessen
## Erfolgsmeldung ausgeben
$html .= qq|<div class="added">$m_text_added</div>|;
}
} else {
## Ungültige Dateiendung
$html .= qq|<div class="error">$m_text_invalidfilename</div>|;
}
} else {
## Limit für Dateigröße überschritten
$html .= qq|<div class="error">Datei zu groß - maximal $kb KB erlaubt!!!</div>|;
}
} else {
main::syserr("Ungültiges Bild! |$itemid|$image|$imagedata|");
}
}
Bei my $kb = 300; kann die erlaubte Dateigröße in KB angegeben werden