Zum Inhalt springen

Dateiupload per php mit Fortschrittsanzeige

Erstellt am 22. Juni 2016 · 1 Antwort · letzte Antwort am 29. Juni 2016

Tags: Datei-Upload, PHP, Frage

mimii ·

Hallo ins Forum,

ich habe ein Formular, in dem Dateien hochgeladen werden können. Dieses Formular habe ich mit php erstellt und mit der Erweiterung Typoscript2ce über eine lib (lib.dateiupload) in ein Contentelment eingebunden. Im Setup habe ich hierzu folgendes stehen

lib.dateiupload = USER_INT
lib.dateiupload {
	userFunc = user_uploadform->upload
	includeLibs = fileadmin/Upload/dateiupload.php
}

Der Upload funktioniert auch soweit. Nun stehe ich vor dem Problem, dass eine Fortschrittsanzeige eingebunden werden soll. Hierzu habe ich einige Tutorials gefunden, wie man das mit einer PHP Session machen kann.

Mein Problem aktuell wie ich das hidden-Feld korrekt einbinde, da ich ja bereits in einer php-Datei bin. Dieser Code "<?php echo ini_get("session.upload_progress.name"); ?>" kann ja so nicht da stehen bleiben.

<?php
  class user_uploadform {  
	function uploadform($content,$conf){ 
		$content .= '<form id="uploadform" action="index.php?id=84" enctype="multipart/form-data" method="POST">'; 
		$content .= '<fieldset>';
		$content .= '<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />';
.....

?>

Hier geht's wohl eher um PHP, aber vielleicht hatte ja schon jemand das gleiche Problem und es gelöst.

Danke für n Tipp und Gruß
mimii

Wie bekommt man den Wert für die "session.upload_progress.name" in das name-Attribut?

mimii ·

Hallo nochmal,

ich habe dieses Tutorial gefunden http://www.it-gecko.de/php-5-4-datei-upload-mit-fortschrittsanzeige-progressbar.html, das wunderbar ohne TYPO3 läuft. Mein großes Problem ist nur wie krieg ich die Dateien ins TYPO3 auf eine Seite???

Ich habe
- die Erweiterung Typoscript2ce installiert
- ein CE mit diesem Plugin erstellt
- hier eine lib.fileuploadform eingetragen
- die lib.fileuploadform im Setup über USER_INT mit userfunc und includeLibs eingebunden
- bei der includeLibs habe ich die index.php mit dem Formular eingebunden und lasse sie über $content auf der Seite ausgeben.
- die Javascriptdatei (jquery.form.js) habe ich im Head eingebunden
- das Javascript aus der index.php des Beispiels habe ich als eigene Datei gespeichert und über
eingebunden.
- der Aufruf der upload.php erfolgt im <form> tag

Hier mal die entsprechenden Ausschnitte

Im Setup stehen

# Javascript für Fortschritt 
page.includeJSFooter {
  file1 = fileadmin/Resources/Public/Upload/script.js
}
lib.fileuploadform = USER_INT
lib.fileuploadform {
	userFunc = user_uploadform->uploadform
	includeLibs = fileadmin/Resources/Public/Upload/dateiuploadform.php
}

Die Dateiuploadform sieht vereinfacht so aus, sie wird auch angezeigt und die upload.php wird aufgerufen

<?php
  class user_uploadform {  
	function uploadform($content,$conf){ 
	
	session_start();
	
	$content = '<form id="upload_form" action="fileadmin/Resources/Public/Upload/upload.php" enctype="multipart/form-data" method="POST">'.
                   '<input type="hidden" name="'.ini_get("session.upload_progress.name").'" value="123">'.
                   '<label for="datei1">Upload-Datei 1:</label>'.
		   '<input id="datei1" name="datei1" type="file" size="50" maxlength="1024" required="required" onChange="validierung(this.id); return false;" />'.
		   '<label for="datei2">Upload-Datei 2:</label>'.
		   '<input id="datei2" name="datei2" type="file" size="50" maxlength="1024" required="required" onChange="validierung(this.id); return false;" />'.
		   '<div id="buttons" class="center">'.
		   '<input name="upload_start" type="submit" value="Hochladen">'.
                   '<input name="abbrechen" type="button" value="Abbrechen" id="abbrechen">'.
		   '</div>'.
                   '<h4>Fortschritt:</h4>'.
		   '<div>'.
		   '<progress max="1" value="0" id="fortschritt"></progress>'.
		   '<p id="fortschritt_txt"></p>'.
		   '</div>'.
		   '</form>';
						
		return $content; 
	}
} 
?>

Was nun nicht passiert ist, dass das Javascript, dass ich im Footer eingebunden habe ausgeführt wird. In der Orinaldatei steht es allerdings ja auch direkt unter der Form. Statt dessen wird die upload.php ausgeführt und zeigt mir dann auf einer weißen Seite diesen Code

array(0) { } array(2) { ["datei1"]=> array(5) { ["name"]=> string(22) "testbild.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpu8aYfC" ["error"]=> int(0) ["size"]=> int(38516) } ["datei2"]=> array(5) { ["name"]=> string(7) "testbild2.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpMwYvQx" ["error"]=> int(0) ["size"]=> int(194901) } }

Irgendwie spielen die nötigen Dateien hier nicht wirklich zusammen. Versteht jemand was ich meine ;-) und hat vielleicht einen Tipp wie ich das zum laufen kriege?

Tausend Dank und verzweifelten Gruß

mimii