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
Linkback: https://www.shoppilot.net/pf/index.php?topic=1247.0