Ich habe mir die aktuelle Version von formhandler installiert und mir ein Kontaktformular zusammengebastelt. Dieses soll eine Möglichkeit bieten Dateien hochzuladen. Nachdem ich die Datei ausgewählt habe und auf "Datei hochladen" klicke passiert genau garnichts. Die Seite wurd neu geladen aber eine hinzugefügte Datei finde ich nicht. Laut Debug-Ausgabe wurde die Datei übertragen, zumindest wird der Dateiname angezeigt. Im Upload-Ordner ist aber nichts zu finden. Ich hoffe ihr könnt mir helfen, so langsam gehen mir die Ideen aus.
page.includeJS.form = {$formhandler.contact.rootPath}js/form.js
plugin.Tx_Formhandler.settings.predef.contact {
name = Kontaktformular
formID = formhandler-contact
formValuesPrefix = formhandler
addErrorAnchors = 1
langFile = {$formhandler.contact.rootPath}lang/lang.xml
templateFile = {$formhandler.contact.rootPath}html/step-1.html
masterTemplateFile.value = {$formhandler.contact.rootPath}html/master.html
cssFile {
10 = TEXT
10.value = {$formhandler.contact.rootPath}skin/css/form.css
}
singleErrorTemplate {
totalWrap = |
singleWrap = <span style="color: red;">|</span>
}
singleFileMarkerTemplate {
totalWrap = <div class="uploadedfiles"><span class="uploadedfiles-label">###LLL:uploadedFiles###</span><ul class="fileupload-list">|</ul></div>
singleWrap = <li>|</li>
showThumbnails = 0
}
errorListTemplate {
totalWrap = <div style="color: red;">Es sind folgende Fehler aufgetreten: <ul>|</ul></div>
singleWrap = <li>|</li>
}
isErrorMarker.default = class="errorField"
files {
uploadFolder = fileadmin/user_upload/attachments/
enableFileRemoval = 1
}
validators {
1.class = Validator_Default
1.config.fieldConf {
email.errorCheck.1 = email
document.errorCheck {
1 = fileAllowedTypes
1.allowedTypes = doc,docx,pdf
2 = fileMaxCount
2.maxCount = 3
3 = fileMaxSize
3.maxSize = 10485760 # = 10MB
}
}
}
finishers {
1 {
class = Tx_Formhandler_Finisher_Mail
config.admin {
sender_email = TEXT
sender_email.value = {$formhandler.contact.email.admin.sender_email}
sender_name = TEXT
sender_name.value = {$formhandler.contact.email.admin.sender_name}
to_email = TEXT
to_email.value = {$formhandler.contact.email.admin.to_email}
subject = TEXT
subject.data = LLL:{$formhandler.contact.rootPath}lang/lang.xml:mail_subject_admin
checkBinaryCrLf = message
attachment = document
}
config.user {
sender_email = TEXT
sender_email.value = {$formhandler.contact.email.user.sender_email}
sender_name = TEXT
sender_name.value = {$formhandler.contact.email.user.sender_name}
to_email = TEXT
to_email.data = GPvar:formhandler|email
subject = TEXT
subject.data = LLL:{$formhandler.contact.rootPath}lang/lang.xml:mail_subject_user
}
}
2 {
class = Tx_Formhandler_Finisher_Redirect
config {
redirectPage = {$formhandler.contact.redirectPage}
}
}
}
}
Mit freundlichen Grüßen
Stefan
Hallo,
Du müsstest noch einen zusätzlichen Finisher hinfügen, der das Verschieben (copy & unlink) der hochgeladenen Dateien vom Temp- zum Zielordner übernimmt.
3 {
class = Tx_Formhandler_Finisher_StoreUploadedFiles
config {
finishedUploadFolder = fileadmin/user_upload/attachments/
renameScheme = [filename]_[time]
}
}
VG,
LuP
Vielen Dank für den Tipp, leider wird weiterhin nichts hochgeladen. Hätte mich jetzt auch ein wenig gewundert, da in keinem einzigen Beispiel dieser Finisher genutzt wird. Aber den Versuch war es auf jedenfall wert. Hab auch nochmal die Rechte des Upload-Ordners geprüft und Testweise auf 777 gestellt. Das brachte aber auch keinen Erfolg.
Hast du oder jemand anders vielleicht noch eine andere Idee? 🙂
wie sieht Dein Template aus?
VG,
LuP
Ich denke das sollte OK sein, habe das aus dem Basic Example etwas modifiziert.
master.html
<!-- ###master_input### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_text">
###error_###fieldname######
<label for="###fieldname###" ###is_error_###fieldname######>###LLL:label_###fieldname###### ###required_###fieldname######</label>
<input type="text" size="20" id="###fieldname###" name="###formValuesPrefix###[###fieldname###]" value="###value_###fieldname######"/>
</div>
<!-- ###master_input### -->
<!-- ###master_input_option### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_text">
###error_###fieldname######
<label for="###fieldname###" ###is_error_###fieldname######>###LLL:label_###fieldname###### ###required_###fieldname######</label>
<input type="text" size="20" id="###fieldname###" name="###formValuesPrefix###[###fieldname###]" value="###value_###fieldname######" class="text-option"/>
</div>
<!-- ###master_input_option### -->
<!-- ###master_textarea### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_textarea">
###error_###fieldname######
<label for="###fieldname###" ###is_error_###fieldname######>###LLL:label_###fieldname###### ###required_###fieldname######</label>
<textarea rows="3" cols="30" id="###fieldname###" name="###formValuesPrefix###[###fieldname###]">###value_###fieldname######</textarea>
</div>
<!-- ###master_textarea### -->
<!-- ###master_file### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_file">
###error_###fieldname######
<label for="###fieldname###" ###is_error_###fieldname######>###LLL:label_###fieldname###### ###required_###fieldname######</label>
<input type="file" id="###fieldname###" name="###formValuesPrefix###[###fieldname###]" value="###value_###fieldname######" />
<input type="submit" ###submit_reload### class="button submit" value="###LLL:submit_reload###" />
<div class="fileupload-info">
<span class="label">###LLL:allowedTypes###</span> <span class="info">######fieldname###_allowedTypes###</span>
<span class="label">###LLL:maxSize###</span> <span class="info">######fieldname###_maxSize###</span>
<span class="label">###LLL:uploadedFiles_count###</span> <span class="info">######fieldname###_fileCount### / ######fieldname###_maxCount###</span>
</div>
</div>
######fieldname###_uploadedFiles###
<!-- ###master_file### -->
<!-- ###master_checkbox### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_checkbox">
###error_###fieldname######
<input type="checkbox" id="###fieldname###" name="###formValuesPrefix###[###fieldname###]" value="1" ###checked_###fieldname###_1### />
<label for="###fieldname###">###LLL:label_###fieldname######</label>
</div>
<!-- ###master_checkbox### -->
<!-- ###master_checkbox_option### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_checkbox">
###error_###fieldname######
<input type="checkbox" id="###fieldname###" name="###formValuesPrefix###[###fieldname###]" value="1" class="checkbox-option" ###checked_###fieldname###_1### />
<label for="###fieldname###">###LLL:label_###fieldname######</label>
</div>
<!-- ###master_checkbox_option### -->
<!-- ###master_radio### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_radio">
###error_###fieldname######
<input type="checkbox" id="###fieldname###" name="###formValuesPrefix###[###fieldname###]" value="1" ###checked_###fieldname###_1### />
<label for="###fieldname###">###LLL:###fieldname######</label>
</div>
<!-- ###master_radio### -->
<!-- ###master_submit### -->
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_submit">
<input type="submit" ###submit_nextStep### class="button submit" value="###LLL:submit_form###" />
</div>
<!-- ###master_submit### -->
step-1.html
<!-- ###TEMPLATE_FORM1### begin -->
###ERROR###
<form action="###REL_URL###" id="contactform" method="post" class="formhandler">
<fieldset>
<legend>###LLL:fieldset_contactdata###</legend>
###master_input_companyname###
<div class="optionset">
###master_input_option_contactperson###
<div class="options">
###master_input_telephone###
</div>
<span class="collapse"></span><br class="clear" />
</div>
<div class="optionset">
###master_input_option_email###
<div class="options">
###master_input_website###
</div>
<span class="collapse"></span><br class="clear" />
</div>
</fieldset>
<fieldset>
<legend>Projektdaten</legend>
<div class="optionset">
###master_input_option_product###
<div class="options">
<div class="checkbox-group">
<p>###LLL:label_manualtype###</p>
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_checkbox">
<input type="radio" name="###formValuesPrefix###[manualtype]" value="###LLL:value_manualtype_1###" id="manualtype-1" />
<label for="manualtype-1">###LLL:label_manualtype-1###</label><br class="clear" />
</div>
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_checkbox">
<input type="radio" name="###formValuesPrefix###[manualtype]" value="###LLL:value_manualtype_2###" id="manualtype-2" />
<label for="manualtype-2">###LLL:label_manualtype-2###</label><br class="clear" />
</div>
</div>
###master_input_complexity###
###master_input_deadline###
###master_input_language###
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_select">
<label for="software">###LLL:label_software###</label>
<select name="###formValuesPrefix###[software]" id="software">
<option value="">###LLL:label_software_0###</option>
<option value="###LLL:value_software_1###">###LLL:label_software_1###</option>
<option value="###LLL:value_software_2###">###LLL:label_software_2###</option>
<option value="###LLL:value_software_3###">###LLL:label_software_3###</option>
<option value="###LLL:value_software_4###">###LLL:label_software_4###</option>
<option value="###LLL:value_software_5###">###LLL:label_software_5###</option>
</select>
</div>
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_text">
###error_othersoftware###
<input type="text" size="20" id="othersoftware" name="###formValuesPrefix###[othersoftware]" value="###value_othersoftware###"/>
</div>
<div class="checkbox-group">
<p>###LLL:label_service###</p>
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_checkbox">
<input type="checkbox" id="service-1" name="###formValuesPrefix###[service][]" value="###LLL:value_service_1###" />
<label for="service-1"><strong>###LLL:label_service_1_big###</strong><br /><span class="description">###LLL:label_service_1_small###</span></label><br class="clear" />
</div>
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_checkbox">
<input type="checkbox" id="service-2" name="###formValuesPrefix###[service][]" value="###LLL:value_service_2###" />
<label for="service-2"><strong>###LLL:label_service_2_big###</strong><br /><span class="description">###LLL:label_service_2_small###</span></label><br class="clear" />
</div>
<div class="formhandler_fieldwrap_html formhandler_fieldwrap_html_checkbox">
<input type="checkbox" id="service-3" name="###formValuesPrefix###[service][]" value="###LLL:value_service_3###" />
<label for="service-3"><strong>###LLL:label_service_3_big###</strong><br /><span class="description">###LLL:label_service_3_small###</span></label><br class="clear" />
</div>
</div>
<div class="optionset">
###master_checkbox_option_onlocation###<br class="clear" />
<div class="options">
###master_input_period###
###master_input_hoursperweek###
</div>
</div>
</div>
<span class="collapse"></span><br class="clear" />
</div>
###master_textarea_message###
###master_file_document###
</fieldset>
###HIDDEN_FIELDS###
###master_submit_submit###
</form>
<script language="javascript" type="text/javascript">
var more_options = '###LLL:span_more_options###';
var less_options = '###LLL:span_less_options###';
</script>
<!-- ###TEMPLATE_FORM1### end -->
<!-- ###TEMPLATE_SUBMITTEDOK### begin -->
<p>The following message has been sent:</p>
<!-- ###TEMPLATE_SUBMITTEDOK### end -->
<!-- ###TEMPLATE_EMAIL_ADMIN_PLAIN### begin -->
###LLL:mail_text_admin###
<!-- ###ISSET_companyname### -->
###LLL:label_companyname###: ###value_companyname###
<!-- ###ISSET_companyname### -->
<!-- ###ISSET_contactperson### -->
###LLL:label_contactperson###: ###value_contactperson###
<!-- ###ISSET_contactperson### -->
<!-- ###ISSET_telephone### -->
###LLL:label_telephone###: ###value_telephone###
<!-- ###ISSET_telephone### -->
<!-- ###ISSET_email### -->
###LLL:label_email###: ###value_email###
<!-- ###ISSET_email### -->
<!-- ###ISSET_website### -->
###LLL:label_website###: ###value_website###
<!-- ###ISSET_website### -->
<!-- ###ISSET_product### -->
###LLL:label_product###: ###value_product###
<!-- ###ISSET_product### -->
<!-- ###ISSET_manualtype### -->
###LLL:label_manualtype###: ###value_manualtype###
<!-- ###ISSET_manualtype### -->
<!-- ###ISSET_complexity### -->
###LLL:label_complexity###: ###value_complexity###
<!-- ###ISSET_complexity### -->
<!-- ###ISSET_deadline### -->
###LLL:label_deadline###: ###value_deadline###
<!-- ###ISSET_deadline### -->
<!-- ###ISSET_language### -->
###LLL:label_language###: ###value_language###
<!-- ###ISSET_language### -->
<!-- ###ISSET_software### -->
###LLL:label_software###: ###value_software###
<!-- ###ISSET_software### -->
<!-- ###ISSET_othersoftware### -->
###LLL:label_othersoftware###: ###value_othersoftware###
<!-- ###ISSET_othersoftware### -->
<!-- ###ISSET_service### -->
###LLL:label_service###: ###value_service###
<!-- ###ISSET_service### -->
<!-- ###ISSET_onlocation### -->
###LLL:label_onlocation###: ###value_onlocation###
<!-- ###ISSET_onlocation### -->
<!-- ###ISSET_period### -->
###LLL:label_period###: ###value_period###
<!-- ###ISSET_period### -->
<!-- ###ISSET_hoursperweek### -->
###LLL:label_hoursperweek###: ###value_hoursperweek###
<!-- ###ISSET_hoursperweek### -->
<!-- ###ISSET_message### -->
###LLL:label_message###:
###value_message###
<!-- ###ISSET_message### -->
<!-- ###TEMPLATE_EMAIL_ADMIN_PLAIN### end -->
<!-- ###TEMPLATE_EMAIL_USER_PLAIN### begin -->
läuft auch..
<!-- ###TEMPLATE_EMAIL_USER_PLAIN### end -->
- <form action="###REL_URL###" id="contactform" method="post" class="formhandler">
+ <form action="###REL_URL###" enctype="multipart/form-data" id="contactform" method="post" class="formhandler">
"The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data."
Ref.: multipart/form-data @ W3C
VG,
LuP
Du bist ein Fuchs! Daran habe ich garnicht gedacht und lieber stundenlang Dokumentation gelesen und mit dem TypoScript gespielt.
Vielen herzlichen Dank, nun läufts!! 🙂