PHP 5.4 Datei-Upload mit Fortschrittsanzeige (Progressbar)
In PHP 5.4 ist es nun endlich möglich ohne Erweiterungen den Fortschritt eines Datei-Uploads zu ermitteln. Wie das gemacht wird, möchte ich euch heute gerne zeigen.
Bisher war man immer gezwungen Erweiterungen wie APC oder uploadprogress einzusetzen oder gar Flash zu verwenden. Dieses Spiel hat mit PHP 5.4 ein Ende.
Die aktuellen Informatien über den Forschritt des Uploades werden in der Session gespeichert. Der Client wird dann asynchron z.B. mit AJAX informiert. Dazu wird in einem Intervall (Polling) der PHP-Server abgefragt.
Es sind also PHP, HTML und Javascript Kenntnisse erforderlich.
Konfiguration:
Die grundsätzliche Konfiguration wird in der PHP.ini vorgenommen. Die einzelnen Punkte heißen:
1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 | ; Enable upload progress tracking in $_SESSION ; Default Value: On ; Development Value: On ; Production Value: On ; http://php.net/session.upload-progress.enabled session.upload_progress.enabled = On ; Cleanup the progress information as soon as all POST data has been read ; (i.e. upload completed). ; Default Value: On ; Development Value: On ; Production Value: On ; http://php.net/session.upload-progress.cleanup session.upload_progress.cleanup = On ; A prefix used for the upload progress key in $_SESSION ; Default Value: "upload_progress_" ; Development Value: "upload_progress_" ; Production Value: "upload_progress_" ; http://php.net/session.upload-progress.prefix session.upload_progress.prefix = "upload_progress_" ; The index name (concatenated with the prefix) in $_SESSION ; containing the upload progress information ; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" ; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" ; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" ; http://php.net/session.upload-progress.name session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" ; How frequently the upload progress should be updated. ; Given either in percentages (per-file), or in bytes ; Default Value: "1%" ; Development Value: "1%" ; Production Value: "1%" ; http://php.net/session.upload-progress.freq session.upload_progress.freq = "1%" ; The minimum delay between updates, in seconds ; Default Value: 1 ; Development Value: 1 ; Production Value: 1 ; http://php.net/session.upload-progress.min-freq session.upload_progress.min_freq = "1" |
Wie man gut sehen kann, ist standardmäßig (Default) der Upload Progress eingeschaltet, so das wir eigentlich nichts ändern müssen. Für uns später sind nur die Optionen session.upload_progress.prefix und session.upload_progress.name wichtig. Da wir sie später auslesen müssen.
Aufbau der Session:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php $_SESSION["upload_progress_test"] = array( "start_time" => 1234567890, // The request time "content_length" => 57343257, // POST content länge "bytes_processed" => 453489, // Anzahl der Bytes die empfangen und verarbeitet wurden "done" => false, // true = POST ist beendet | false = POST läuft noch "files" => array( 0 => array( "field_name" => "file1", // Name of the <input/> field // The following 3 elements equals those in $_FILES "name" => "foo.avi", "tmp_name" => "/tmp/phpxxxxxx", "error" => 0, "done" => true, // true = Datei ist hochgeladen | false = Datei wird noch hochgeladen "start_time" => 1234567890, // Beginn der Verarbeitung dieser Datei "bytes_processed" => 57343250, // Anzahl der Bytes dieser Datei, die empfangen und verarbeitet wurden ), // Weiter Dateien in der gleichen Anfrage, die noch nicht beendet sind 1 => array( "field_name" => "file2", "name" => "bar.avi", "tmp_name" => NULL, "error" => 0, "done" => false, "start_time" => 1234567899, "bytes_processed" => 54554, ), ) ); ?> |
Der Array-Index setzt sich aus der Option session.upload_progress.prefix und den Wert aus dem hidden Feld session.upload-progress.name. Dazu gleich mehr im Beispiel
Beispiel Anwendung:
index.php
Beginnen wir mit dem HTML Gerüst. Ich habe dies bewusst einfach gehalten, so das man das Prinzip gut versteht. Für die AJAX Kommunikation verwende ich jQuery + das Plugin Form, welches uns sehr einfach AJAX Uploads ermöglicht (über Iframe).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?php session_start(); ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>PHP 5.4 Datei-Upload mit Fortschrittanzeige</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="jquery.form.js"></script> <style> div { padding:5px; } progress { margin:10px 0 10px 0; } </style> </head> <body> <article> <header> <h1>PHP 5.4 Datei-Upload mit Fortschrittanzeige</h1> </header> <section> <form action="upload.php" method="post" enctype="multipart/form-data" id="upload_form"> <!-- Dieses Feld ist wichtig. PHP benötigt dies für die Zuordnung. Der Wert (Value) ist für uns später wichtig um auf die globale $_SESSION zuzugreifen --> <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="test"> <div> <label for="datei1">Datei 1:</label> <input type="file" name="file1" id="datei1"> </div> <div> <label for="datei2">Datei 2:</label> <input type="file" name="file2" id="datei2"> </div> <div> <input name="upload_start" type="submit" value="Hochladen"> <input name="abbrechen" type="button" value="Abbrechen" id="abbrechen"> </div> </form> </section> <section> <h2>Fortschritt:</h2> <div> <progress max="1" value="0" id="fortschritt"></progress> <p id="fortschritt_txt"></p> </div> </section> </article> <script> |
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | var intervalID = 0; $(document).ready(function(e) { $('#upload_form').submit(function(e) { if($('#datei1').val() == '' && $('#datei2') == ''){ e.preventDefault(); //Event abbrechen return false; } intervalID = setInterval(function() { $.getJSON('fortschritt.php', function(data){ if(data) { $('#fortschritt').val(data.bytes_processed / data.content_length); $('#fortschritt_txt').html('Fortschritt '+ Math.round((data.bytes_processed / data.content_length)*100) + '%'); } }); }, 1000); //Zeitintervall auf 1s setzen $('#upload_form').ajaxSubmit({ success: function() { $('#fortschritt').val('1'); $('#fortschritt_txt').html('Fertig'); clearInterval(intervalID); }, error: function() { $('#fortschritt').val('1'); $('#fortschritt_txt').html('Ein Fehler ist aufgetreten'); clearInterval(intervalID); } }); e.preventDefault(); //Event Abbrechen }); $('#abbrechen').click(function(e) { $.ajax("fortschritt.php?cancel=true"); $('#fortschritt').val('1'); $('#fortschritt_txt').html('Upload abgebrochen'); clearInterval(intervalID); }); }); |
106 107 108 109 | </script> </body> </html> |
Durch setInterval erzeugen wir ein polling auf dem Webserver, der jede Sekunge getriggert wird. In der Funktion wird die Seite fortschritt.php aufgerufen, welches im JSON Format uns den aktuellen Fortschritt des Uploades zurück gibt.
fortschritt.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php session_start(); /* * Upload-Progress Prefix auslesen und mit Wert aus * dem hidden Feld unseres Formulars ergänzen */ $progress_name = ini_get("session.upload_progress.prefix")."test"; /* * Wenn Upload abgebrochen werden soll */ if(isset($_GET['cancel']) && $_GET['cancel'] == "true") { /* * Bricht den Upload ab */ $_SESSION[$progress_name]['cancel_upload'] = true; return; } if(isset($_SESSION[$progress_name])) { /* * array in JSON umwandeln und zurück geben */ echo json_encode($_SESSION[$progress_name]); } ?> |
upload.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php session_start(); /* * Session-Upload-Progress ist leer * durch die Option session.upload_progress.enabled = On */ var_dump($_SESSION); /* * Übliches Format von $_FILES */ var_dump($_FILES); /* * Wenn abgebrochen */ if($_FILES['error'] == UPLOAD_ERR_EXTENSION) echo "Datei abgebrochen"; ?> |
Getestet habe ich das Ganze unter Linux. Besser gesagt, unter Ubuntu mit dem Paket von damz.org. Unter Windows wollte es bei mir nicht funktionieren, was ich auf den PHP eigenen Webserver zurück schiebe. Unter Ubuntu hatte ich Apache2 mit PHP Modul eingesetzt.
Download
Alle Quellcode Dateien könnt ihr euch hier Downloaden: PHP 5.4 Datei Upload mit Fortschrittanzeige
Ich hoffe euch hat der Artikel gefallen. Wie immer bei Fragen oder Kritik stehe ich euch gern zur Seite.
Schlagwörter: ajax, PHP, Upload
Roland Hentschel sagt
am 14. Oktober 2012 @ 15:51
Ich habe gerade mal Dein Script getestet (auf XAMPP unter Windows) – es hat mir zwar den Ladebalken gezeigt und den erfolgreichen Upload gemeldet, ohne aber irgend etwas hochgeladen zu haben.
Hab‘ ich da was falsch gemacht ?
admin sagt
am 16. Oktober 2012 @ 13:06
Hallo,
nein du hast nichts falsch gemacht. Das Beispiel zeigt nur wie man das neue Konzept anwendet.
Wenn du die Datei speichern möchtest, musst du in der Datei Upload.php folgendes ergänzen:
move_uploaded_file($_FILES[‚file1‘][‚tmp_name‘], ‚upload/‘.$_FILES[‚file1′][’name‘]);
Dabei wird die hochgeladene Datei, aus dem Inputfeld file1, im Ordner „upload“, mit dem Ursprünglichen Namen, gespeichert.
Der Ordner „upload“ muss natürlich vorhanden sein.
LG
Julius
Christian sagt
am 16. Oktober 2012 @ 17:48
Hi,
danke für die Skripte, aber vielleicht bin ich ja zu doof 🙁
Ich soll den Uploadvorgang in eine bestehende Seite einfügen. Jetzt hab ich die Pfade hingebogen und das ganze läuft soweit.
Bis auf… also mein .js Sniplet sieht so aus:
$(‚#fortschritt‘).val(‚1‘);
$(‚#fortschritt_txt‘).html(‚Fertig‘);
clearInterval(intervalID);
$(„#upload_done_form“).submit(); <- das einzige, was ich an Logik geändert habe
Ich will zurück auf meine bestehende Seite *und* die irgendwie die Werte aus der _FILES Variablen weiterverwursten… (daher auch der Versuch mit den Formular, wohl nicht der Königsweg)
Aber wie komm ich zurück auf meine Seite und kann die _FILES Inhalte mitnehmen?
admin sagt
am 16. Oktober 2012 @ 22:38
Hallo,
so richtig versteh ich nicht was du meinst.
Was soll $(„#upload_done_form“).submit(); ?
Also du willst nach den erfolgreichen Upload, die Daten die von der Datei upload.php zurückgegeben werden, auswerten und auf deiner Seite anzeigen?
Das kannst du wie folgt machen:
In der index.php fügst du folgendes hinzu:
Zeile 80: dataType:’json‘,
Damit gibst du an das die response Daten vom Typ JSON sind.
Zeile 81: success: function()
änderst du in:
success: function(data)
Die Variable data enthält das JSON-Objekt.
Zeile 84 (unter clearInterval): Dort kannst du nun das JSON-Objekt verarbeiten.
z.B. alert(data.file1.name) -> Name der Datei wird ausgegeben.
Die uploaded.php Datei muss dann so aussehen:
‚Upload wurde abgebrochen‘));
} else {
echo(json_encode($_FILES));
}
?>
Ich habe dieses Beispiel kann dir die Problematik näher bringen.
LG
Julius
Christian sagt
am 18. Oktober 2012 @ 16:50
Funzt leider nicht:
Ich hab die upload.php durch deine ersetzt, und das Javascript in der index geändert:
…
$(‚#upload_form‘).ajaxSubmit({
dataType:’json‘,
success:function(data) {
$(‚#fortschritt‘).val(‚1‘);
$(‚#fortschritt_txt‘).html(‚Fertig‘);
clearInterval(intervalID);
alert(data.file1.name); },
..
Aber anscheinend lauf ich immer in den Errorzweig, weil ich kein Alert erhalte, sondern nur das „Ein Fehler ist aufgetreten“
Sorry, aber ich komme aus der Backendecke. Und mir ist eigentlich nicht klar, was wann aufgerufen wird (das fortschritt.php wohl während des eigentlichen Uploadvorgangs? Das upload.php nachdem der Upload fertig ist und der Output von upload landet dann in der data Variablen, die ich eingefügt habe?
Und wenn das alles funktionieren würde, könnte ich dann die Daten aus data=$_FILES per javascript Formular weiter an ein php Skript geben?
Christian sagt
am 18. Oktober 2012 @ 17:29
So, Kommando zurück.
Jetzt krieg ich im Alert schon mal den Error und die Dateinamen, keine Ahnung, was vorher das Prob war…
Christian sagt
am 19. Oktober 2012 @ 11:19
So, soweit bin ich durch, auch der Letzte kriegt’s mal hin.
Mein einziges Prob ist noch, dass (im Gegensatz zu vorher ohne Fortschrittsanzeige) die PHP Fkt. is_uploaded_file ein false zurückgibt. Hast du eine Ahnung warum?
admin sagt
am 19. Oktober 2012 @ 15:39
Hey,
freut mich das es jetzt bei dir funktioniert.
Wie hast du denn die Funktion is_uploaded_file aufgerufen?
LG
Julius
Christian sagt
am 19. Oktober 2012 @ 17:53
Tja, genau das ist wohl das Prob:
in der js success Funktion erzeuge ich ein Formular mit den ganzen $_FILES Informationen als hidden Felder und dann mache ich mit dem Submit Aufruf einen erneuten Aufruf der index.php und *erst dort* mache ich den eigentlichen File Upload. Und zu diesem Zeitpunkt erkennt PHP wohl nicht mehr, dass ein erfolgreicher und *erlaubter* Upload via HTTP-POST stattgefunden hat.
Also muss wohl die ganze Logik ins uploaded.php wandern, ob ich will oder nicht.
admin sagt
am 19. Oktober 2012 @ 18:28
Jup, so wie du es jetzt machst geht es nicht.
Der Upload ist nur während der Ausfährung der upload.php gültig. Daher muss deine Geschäftslogik in die upload.php Datei.
LG
Julius
Qrizz sagt
am 23. November 2012 @ 18:18
Hallo, kann man das Script auch nutzen um auf einen FTP-Server zu übertragen? Ich sehe in keiner Datei Felder, wo man den Server und Benutzername, Passwort eigeben kann ?
admin sagt
am 24. November 2012 @ 13:43
Hallo,
nein das geht leider nicht. Du könntest aber zunächst die Datei, mit diesem Skript, auf denen Server laden und danach diese mit PHP auf den FTP-Server laden. (http://php.net/manual/de/book.ftp.php)
LG
Julius
Topper sagt
am 29. November 2012 @ 17:53
Wow, du bist echt genial! =)
Und es funktioniert auch alles, wenn man die richtigen Klammern beim Upload-Ordner verwendet: ‚upload‘
… wollte sagen Anführungszeichen. Die werden nämlich beim Posten umgewandelt.
hmmm … leider zeigt der Fortschrittsbalke bei mir nur die 0 % oder erst ganz am Ende die 100 % an. Das hab ich jetzt erst durch das Hochladen einer größeren Datei bemerkt. Dazwischen passiert gar nichts und der Benutzer kann den Upload nicht erkennen. Liegt das dann am Server und der php.ini? Auf die hab ich leider keinen Zugriff.
Danke
Topper
admin sagt
am 29. November 2012 @ 21:41
Danke Topper 🙂
Ist denn auf dem Server PHP5.4 installiert?
PS
Habe mal die drei Kommentare zusammengefasst.
LG
Julius
Alex sagt
am 28. Dezember 2012 @ 18:40
füge bei der fortschritt.php noch
header(‚Content-type: application/json‘);
hinzu bevor du json ausgibts… sonst hätte man bei dem script ein problem wenn jemand es über den IE aufruft 😉
Detlef sagt
am 23. Januar 2013 @ 20:54
habe heruntergeladen, und auch versucht die hier noch beschriebenen Zeilen einzufügen, scheinbar an der falschen Stelle.
der Balken wird erst bei 100 % angezeigt und die Datei nicht in das Zielverzeichnis verschoben
kannst du mir die Dateien nochmal in funktionsfähiger Ausführung per eMail schicken oder posten ?
Real_Thunder sagt
am 21. Februar 2013 @ 22:09
An alle bei denen es nicht funktioniert:
PHP darf nicht als FastCGI eingebunden werden,
wenn die der Fall ist, dann wird die session icht erstellt.
MfG Real Thunder
Günter sagt
am 1. März 2013 @ 13:54
Hallo,
funktioniert das Beispiel auch im IE?
Wie sieht die Browserunterstütung allgemein aus?
Habs mal kurz getestet (nur akutelle Versionen), im Firefox und Chrome läuft es einwandfrei, der IE und Opera zeigen den Progress nicht an. Erst nach Abschluss kommt hier die Meldung fertig.
Gibt es einen Workaround für IE und Opera?
Gruß
Günter
Christian sagt
am 11. März 2013 @ 09:46
>> Unter Windows wollte es bei mir nicht funktionieren
Bei mir leider auch nicht. Hat schon jemand herausgefunden warum dies so ist? Die Session bekommt einfach nicht die Daten.. 🙁
Chri.s sagt
am 30. Juli 2013 @ 23:49
Hallo,
wie es ausschaut funktioniert es unter IE10 (Win8, Desktop) und FF (aktuell) sehr gut, nur Chrome springt von 0 auf 100%, was noch nicht optimal ist. Werde mal schauen, was es für eine Lösung gibt.
Trotzdem Danke.
Chri.s sagt
am 30. Juli 2013 @ 23:57
OK, hat sich erledigt, warum auch immer geht das ganze nur bis ca 5M, darüber nicht mehr (auch, wenn maximal 20M uploadbar sind).
dieter sagt
am 6. August 2013 @ 20:58
das skript ist toll… funktioniert prima… nur wenn ich den namen der hochgeladenen datei dann noch in einer datenbank abspeichern will funktioniert nichts… wie kann ich das machen??? Wäre für hilfe echt dankbar..
Max sagt
am 10. November 2013 @ 16:31
Hi,
hab mir dein script gerade in mein vorhandenes upload script eingefügt. Der Upload und die Progressbar funktionieren. Leider werden die Formular Daten nicht an die upload.php übergeben.
Woran kann das liegen?
björn sagt
am 11. Dezember 2013 @ 18:31
hay habe da mal einen frage wie ganz oben was roland fragt wo genau muss ich das einfürgen was du dann drunter geantwortet hast ? also das es anch dem erfolgreichem upload in den upload ordner kommt
Heinzeinz sagt
am 7. April 2014 @ 13:57
Bei mir funzt es leider nicht, wie genau und an welcher Stelle muss mann den
move_uploaded_file($_FILES[‚file1‘][‚tmp_name‘], ‘upload/’.$_FILES[‚file1′][’name‘]);
einbinden.
Bin leider totaler PHP-Anfänger.
Alexander Sidikov sagt
am 28. Mai 2014 @ 13:08
@Heinzeinz
da ist nur ein fehler bei den hochkommata `upload´ -> ‚upload‘
move_uploaded_file($_FILES[‚file1‘][‚tmp_name‘], ‚upload/‘.$_FILES[‚file1′][’name‘]);
Alexander Sidikov sagt
am 28. Mai 2014 @ 13:10
ok leider werden die auch in meinem kommentar falsch gesetzt. Also ersetze einfach die schrägen hochkomma mit geraden.
Marcus sagt
am 11. Juni 2014 @ 21:28
Ich habe in upload.php das entsprechende eingefügt damit die Datein in dem Ordner upload landen. Machen sie aber nicht, sie landen im ordner, in dem Ordner, in dem das Script liegt.
Außerdem würde ich gerne auch andere Datein hochladen wie .mov, .zip etc.
Wie muss ich hier vorgehen?
Danke
Marcus
Cora sagt
am 2. Juli 2014 @ 12:56
Vielen Dank für die Dateien und die Kommentare. Nachdem ich zuerst http://www.sitepoint.com/tracking-upload-progress-with-php-and-javascript/ (nur mit js statt mit jQuery, sonst gleich) getestet hatte, habe ich es nun auch mit der hier vorgestellten Lösung versucht.
Allerdings erhalte ich immer das gleiche Ergebnis: Die Fortschrittsanzeige sieht gut aus. Aber der move-Befehl funktioniert einfach nicht und bereits die Funktion is_uploaded_file liefert false zurück, obwohl das Hochladen ohne Fortschrittsanzeige problemlos funktioniert.
Matze sagt
am 3. Juli 2014 @ 20:57
Hi,
ich bin dir zuerst sehr Dankbar für dein tolles Script. Das hat mir enorm weitergeholfen. Ich habe dummerweise ein seltsames Pänomen. Ich verwende dein Script auf meiner Page an zwei verschiedenen Orten (Uploadbereich und Adminbereich). Im Uploadbereich funktioniert es tadellos aber im Adminbereich habe ich ständig Abbruchfehler, obwohl ich es schon X mal geprüft habe. Das nächste ist, zuhaus auf meiner xampp Umgebung funktioniert alles Super. Aber spiele ich es auf meine Webserver hoch funktioniert der Adminbereich nicht mehr. Zur Info, der Webserver ist ein Windows 2008R2 IIS Server mit Plesk und PHP 5.4. Hat jemand ne Idee was ich falsch mache. Mir gehen die Ideen aus. Gibt es beim IIS ne Besonderheit die ich beachtn muss. Die PHP.ini hat auch alle notwendigen Eintragungen.
Gruss Matze
Cora sagt
am 4. Juli 2014 @ 14:14
Nachtrag: Das oben geschilderte Problem hing mit Datei-/Verzeichnisberechtigungen zusammen und ließ sich lösen.
Cora sagt
am 10. Juli 2014 @ 10:43
Ich muss mich doch noch mal zu Wort melden. Für handliche Dateien im MB-Bereich funktioniert die Sache ja prima. Mein Kunde hat aber Dateien im GB-Bereich, und da tut es leider nicht mehr, da in dem Fall die Variable data den Wert null hat. Gibt es zufällig außer mir jemanden mit dem gleichen Problem? Und vielleicht weiß sogar jemand die Lösung?
Cora sagt
am 15. Juli 2014 @ 18:41
Nachtrag zu großen Dateien (GB): Der Einsatz von is_int für die großen Zahlen, die im GB-Fall für die Dateigröße (in Bytes!) entstehen, hat gezeigt, dass sie zumindest auf dem Server meines Kunden außerhalb des integer-Bereichs liegen. Damit ist die obige Lösung für derartige Fälle leider nicht anwendbar.
Heu sagt
am 8. Oktober 2014 @ 15:34
Hi,
danke für das Top Tutorial + Script!
Der Upload funktoniert bei mir auch soweit, nur der Fortschrittsbalken sprint einfach von 0 auf 1 und eine Prozentangabe wird auch nicht angezeigt. Das müsste ja eigentlich an dem „$.getJSON“ – Teil liegen, aber was genau das Problem ist, konnte ich leider nicht heraus finden.
Matthias sagt
am 2. Dezember 2014 @ 00:39
Hallo, danke bei mir funktionierts einwandfrei.
Genau das was ich gesucht habe. Einfach und gut.
Keine 1000-2000 Zeilen Code.
Für meine Anwendung hab ich’s noch etwas umgebaut.
Bei Interesse einfach antworten.
Carsten sagt
am 9. April 2015 @ 08:29
Hallo, auch wenn der Beitrag schon etwas ruht habe ich ein kleines Problem mit der Fortschrittsanzeige… Vorerst danke für das Tutorial – ist echt klasse!. Der Upload funktioniert und ansonsten ist auch alles gut. Nur, das der Fortschrittblaken bei mir während des Uploades leer ist und nach erfolgreichem Upload sofort 100% anzeigt… Kann mir jemand sagen woran das liegen könnte? Ich habe das einschlägiger Suchergebnisse heruasgefunden, das dies wohl an den Eisntellungen in der php.ini liegen kann. Leider weis ich nicht wie ich diese ändern kann, da ich mein Webspace (mit php) bei Strato habe…
Danke im Voraus
Carsten
Flo sagt
am 28. Mai 2015 @ 17:33
Hallo Julius,
danke auch von meiner Seite aus für das tolle Skript.
Nur eine Kleinigkeit vermisse ich noch: Die Upload-Geschwindigkeitsanzeige während des Uploads. Wie kann ich diese noch anzeigen lassen, zusätzlich zum Fortschrittsbalken?
Danke und viele Grüße,
Flo
Thomas sagt
am 10. August 2015 @ 09:18
Danke für das Script, funktioniert 1 A
Oliver sagt
am 22. Oktober 2015 @ 23:28
Thanks, I also found a great example here: https://github.com/pH-7/PHP5.4-Session-Upload-Progress-Bar
Bartezz sagt
am 12. November 2015 @ 15:34
Hallo,
ich würde gerne noch ein drittes Formularfeld einfügen z.B:
Datei 1:
Datei 2:
Datei 3:
Dann funktioniert es aber nicht mehr, was mache ich falsch?
Sven sagt
am 24. November 2015 @ 18:44
Hallo, ich finde das Script auch klasse. Funktioniert soweit – ich habe das Problem, daß das Script bei einer Datei immer bei 93% abbricht. Wie kann ich das lösen? Ich möchte auch Dateien hochladen, die größer als 30 MB sind.
Andreas sagt
am 13. Juli 2017 @ 17:42
Wie dem auch sei – ist vermutlich schon in die Jahre gekommen und keine gängige Lösung – vielen Dank für die Skripte anyway.
Will hier nur ergänzend hinzufügen, dass es vernünftig wäre vor dem Upload zu überprüfen, ob die Dateien schon auf dem Server liegen. Das spart Zeit, Energie und sonstige Ressourcen.
Viel Spaß beim Testen 😉