Zum Inhalt springen

[formhandler] Datei Upload nicht möglich

Erstellt am 17. April 2012 · 7 Antworten · letzte Antwort am 18. April 2012

Tags: Frage

Knalltuete ·

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

LuP ·

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

Knalltuete ·

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? 🙂

Knalltuete ·

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 -->
LuP ·
-  <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

Knalltuete ·

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!! 🙂