Zum Inhalt springen

Typo3Script Form mit mehren FileUploads und fileallowedtypes/filemaximumsize

Erstellt am 9. November 2017 · 6 Antworten · letzte Antwort am 20. November 2017

Tags: Datei-Upload, TYPO3 7, Frage

gatekeepa ·

Hallo in die Runde,

im folgenden Formular soll es die Möglichkeit geben, null bis sechs Dateien hochzuladen, die dann per eMail versendet werden. Es sind nur Dateien vom Dateityp *.pdf mit einer maximalen Größe von 5 MB pro Datei erlaubt.

Die folgende Abfrage funktioniert; wenn man versucht einen anderen Dateityp hochzuladen oder eine Datei die zu groß ist, wird der Fehler ausgegeben.

Der (gekürzte) Code für das Formular sieht zur Zeit so aus:

enctype = multipart/form-data
method = post
prefix = tx_form
confirmation = 
postProcessor {
1 = mail
1 {
recipientEmail = test@test.de
senderEmail = test@test.de
subject = Betreff
}
2 = redirect
2 {
destination = 250
}
}
10 = FIELDSET
10 {
legend {
value = Ihre Kontaktdaten
}
10 = TEXTLINE
10 {
type = text
name = Vorname
label {
value = Vorname
}
}
20 = TEXTLINE
20 {
type = text
name = Nachname
label {
value = Nachname
}
}
30 = TEXTLINE
30 {
type = text
name = E-Mail
label {
value = E-Mail Adresse
}
}
40 = TEXTLINE
40 {
type = text
name = Telefon
label {
value = Telefon
}
}
}
...
40 = FIELDSET
40 {
10 = HEADER
10 {
class = content-header
headingSize = h4
content = Überschrift
}
20 = FILEUPLOAD
20 {
type = file
name = datei1
label {
value = Anschreiben
}
}
30 = FILEUPLOAD
30 {
type = file
name = datei2
label {
value = Lebenslauf
}
}
...
}
60 = SUBMIT
60 {
type = submit
name = 15
value = Formular absenden
}
rules {
1 = required
1 {
showMessage = 
message = Benötigt
error = Dies ist ein Pflichtfeld
element = Vorname
}
2 = required
2 {
showMessage = 
message = Benötigt
error = Dies ist ein Pflichtfeld
element = Nachname
}
3 = email
3 {
showMessage = 
message = (max.muster@domain.com)
error = Dies ist keine gültige E-Mail-Adresse
element = E-Mail
}
4 = fileallowedtypes 
        4 { 
                breakOnError = 0 
                showMessage = 
                message = (%allowedTypes) 
                error = Bitte hängen Sie nur Dokumente mit dem Dateityp *.pdf an.
                types = application/pdf
                element = datei1
        } 
    5 = filemaximumsize 
        5 { 
                breakOnError = 0 
                showMessage = 
                message = The file has to be smaller as %maximum 
                error = Diese Datei ist zu groß (max 5MB).
                maximum = 5242880 
                element = datei1
        } 
6 = fileallowedtypes 
        6 { 
                breakOnError = 0 
                showMessage = 
                message = (%allowedTypes) 
                error = Bitte hängen Sie nur Dokumente mit dem Dateityp *.pdf an.
                types = application/pdf
                element = datei2
        } 
    7 = filemaximumsize 
        7 { 
                breakOnError = 0 
                showMessage = 
                message = The file has to be smaller as %maximum 
                error = Diese Datei ist zu groß (max 5MB).
                maximum = 5242880 
                element = datei2
        } 
...
}

Leider kann das Formular nicht mehr abgeschickt werden OHNE in jedem FileUpload-Feld eine Datei zu hinterlegen, ansonsten erscheint der Fehler, dass der Dateityp falsch sei.

Wie kann ich evtl. erreichen, dass die Regeln fileallowedtypes und fileallowedtypes nur angewendet werden, wenn eine Datei im jeweiligen Feld hochgeladen wurde?

Vielen Dank und LG!

pstranghoener ·

Hi,

hast du schon eine Lösung für dein Problem?
Wenn nicht pinne ich deine Frage an, damit du schnellstmöglichst eine Antwort bekommst 🙂

Liebe Grüße
Philipp

gatekeepa ·

Hallo Philipp,

leider habe ich keine Lösung und würde mich natürlich freuen, wenn du meine Anfrage herausstellen würdest.

Vielen Dank und LG!

Power-Poler ·

Kann mir gut vorstellen, das du die Adresse test@test.de jetzt nur zum hier posten eingetragen hast.
Meine aber mal gehört zu haben, dass E-Mails dann bei Stiftung Warentest landen, oder so ähnlich.
Also auch zu Test zwecken nicht zu empfehlen (Wenn ich mich irre, bitte korrigieren).

@pstranghoener kannst du bitte ganz oben in seiner Nachricht [​code language=TypoScript] draus machen?
(Liest sich besser 😃)

Darf ich fragen, warum du das per TypoScript löst? habe dafür eine Extension aufgesetzt.
Bin mir jetzt nicht sicher was im Hintergrund passiert, wenn bei einer nicht existenten Datei der Typ abgefragt wird, kannst du aus types = application/pdf eine ODER abfrage machen, und den Typ der bei einer leeren Datei ermittelt wird, eintragen?
Aber wie gesagt, habe das über eine Extension in PHP gelöst. Da sieht das etwas anderes aus.

gatekeepa ·

Hallo Power-Poler,

die eMail-Adresse ist nur ein Platzhalter, um das Problem hier im Forum zu disktuieren; ansonsten hast du natürlich recht.

Leider finde ich die Funktion nicht, um meinen eigenen Post zu editieren und kann daher [​code language=TypoScript] nicht ändern.

Ich setzte da an einer Lösung einer anderen Person an, die das Formular aufgesetzt hat, daher die Lösung mit Typoscript. Ich hatte auch an eine ODER-Abfrage gedacht, also dass die Funktion allowedfiletypes nur angewendet wird, falls eine Datei im Feld hochgeladen wurde. Allerdings habe ich gar keine Ahnung, wie ich das realisieren kann.

Power-Poler ·

If abfragen in TypoScript habe ich so gelöst. Ob aber dein Element dieses zulässt, weiß ich nicht.
#126311

Ansonsten mein Datei Upload:
#126415
Da ist auch ein Link zum Tutorial drin, das ich verwändet habe.