BloodySword: Multi-Uploader mit Fortschrittsanzeige

Hallo,

ich habe mir im Web schon mehr als ein Dutzend Lösungen für ein Uploader angesehen, der auf PHP basis ist und auch eine Fortschrittsanzeige beinhaltet.

Leider schaffe ich es nicht diese in mein Projekt zu integrieren. Es scheitert schon an Grundlagen...

Könnt ihr mir vielleicht dabei helfen?

Ich könnte Empfehlungen von Implementationen gebrauchen und Hilfestellung wie man diese Einbaut (Step by Step Anleitung)

Ich bin nicht mal in anderen Foren und hier bei der Suche fündig geworden.

Ich hoffe auf Eure Hilfe.

lg BloodySword

  1. Grüße,

    Ich könnte Empfehlungen von Implementationen gebrauchen und Hilfestellung wie man diese Einbaut (Step by Step Anleitung)

    irgendwas sagt mir, dass eine ausreichend ausführliche step-by-step Anleitung einen vollständigen kurs PHP beinhalten könnte, oder irre ich mich?
    MFG
    bleicher

    1. Grüße,
      »» Ich könnte Empfehlungen von Implementationen gebrauchen und Hilfestellung wie man diese Einbaut (Step by Step Anleitung)

      irgendwas sagt mir, dass eine ausreichend ausführliche step-by-step Anleitung einen vollständigen kurs PHP beinhalten könnte, oder irre ich mich?
      MFG
      bleicher

      Quatsch...
      Ich hab schon eine fast Komplette Seite mit PHP, MySQL und Smarty aufgebaut. Nur dieses billige Upload soll einem Uploadmanager weichen...

      1. Hello,

        Quatsch...
        Ich hab schon eine fast Komplette Seite mit PHP, MySQL und Smarty aufgebaut. Nur dieses billige Upload soll einem Uploadmanager weichen...

        Wenn Du schon so ein Profi bist, dann kannst Du mir bestimmt auch eine Frage beantworten, die mich schon länger beschäftigt:

        Wann wird die Kontrolle vom Webserver an das per URL referenzierte PHP-Script übergeben, wenn man einen POST-Request mit Upload durchführt und wie könnte man hierfür einen aussagefähigen Versuchsaufbau gestalten?

        Wann schaut der Webserver das erste Mal nach, ob die Ressource tatsächlich existiert?
        Vor oder nach dem Upload?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Wenn Du schon so ein Profi bist, dann kannst Du mir bestimmt auch eine Frage beantworten, die mich schon länger beschäftigt:

          Von mir gibt's dafür ein fachlich hilfreich, die Fragestellung ist so genial, das sie die "Lösung" in greifbare Nähe rückt.

          Jedenfalls ist eine Lösung mit echter, vernünftiger Upload-Fortschrittsanzeige imho ein etwas härterer Brocken. An sowas beißen sich sogar Branchenplatzhirsche wie Rapidshare die Zähne aus :)

          1. Aloso: Einen einfachen Upload habe ich schon lange hinbekommen.

            Letzteres scheint eine Herrausforderung zu sein. Ich schaue mir gerade SWFUpload an. Wenn dort allerdings wieder eine .fla-Datei ist wo man die Dateitypen und die Farben voreinstellen muss verzweifel ich langsam. Sie kann ich nicht bearbeiten - ich kann mir kein Adobe Flash leisten!

            1. Wenn dort allerdings wieder eine .fla-Datei ist wo man die Dateitypen und die Farben voreinstellen muss

              Musst du nicht. Wie kommst du darauf?
              Die Konfiguration funktioniert größtenteils über JavaScript.

              Mathias

              1. »» Wenn dort allerdings wieder eine .fla-Datei ist wo man die Dateitypen und die Farben voreinstellen muss

                Musst du nicht. Wie kommst du darauf?
                Die Konfiguration funktioniert größtenteils über JavaScript.

                Mathias

                Das habe ich nun auch festgestellt, danke. :)
                Ich habe eben versucht ein Versuch aufzubauen, welches auf dem Speed Demo basiert.

                http://demo.swfupload.org/v220/speeddemo/index.php

                Ich bekomme es aber nicht hin, dass der Button "Upload" angezeigt wird. Selbstverständlich habe ich eine Grafik angelegt und per JavaScript dem sfwu-Objekt übergeben

                Der Macht sich einfach nicht in das Span rein, welches die gewisse Platz-Halter-ID hat. Und diese stimmt... >.<

        2. Antwort zu Frage 1: Das PHP-Script wird leider erst NACH dem Senden der POST-Daten (somit natürlich auch die Daten der zu hochladenen Datei) ausgeführt.

          Antwort Frage 2: Auch erst nach dem Senden der POST-Daten...

          Gegenfrage: Wie funktioniert dann ein Uploadmanager aus JavaScript/HTML basis, mit Fortschrittsanzeige?

          1. Wie funktioniert dann ein Uploadmanager aus JavaScript/HTML basis, mit Fortschrittsanzeige?

            Indem Flash oder Java den Upload vornimmt, und in diesen Umgebungen lässt sich abfragen, wie weit die Übertragung der Datei gediehen ist.

            Richtig, das PHP-Script wird erst nach der erfolgreichen Übertragung des HTTP-Requests ausgeführt, deshalb sagte ich ja, dass es mit der Fortschrittsanzeige üblicherweise nichts zu tun hat.

            Mathias

            1. Da fragt sich doch, wer wieder diesen Mist verzapft hat... Sicherlich M$...
              Da kann man nur hoffen, dass man bei Browsern der nächsten Generation den Fortschritt, sowie Infos über Geschwindigkeit und co. per JavaScript abfragen kann...

              Zum Beispiel genau so wie man Ajax benutzt:

              Man erzeugt ein Uploader-Object, weist diesem ein Input[Type=file]-Feld zu und führt per Button oder Submit StartUpload() aus. Während der Browser über Ajax sendet kann man dem Objekt die Infos auslocken:

                
              getElementById('divprogress').innerHTML=objAjaxUploader.progress['string'];
              

              Usw. Das wäre echt eine sehr bequeme und ich denke auch sichere Lösung.

              1. Da kann man nur hoffen [...] per JavaScript abfragen
                Zum Beispiel genau so wie man Ajax benutzt:

                Informiere dich, wofür das J in AJAX steht.

                1. »» Da kann man nur hoffen [...] per JavaScript abfragen
                  »» Zum Beispiel genau so wie man Ajax benutzt:

                  Informiere dich, wofür das J in AJAX steht.

                  AJAX=Asynchronous JavaScript and XML
                  http://de.wikipedia.org/wiki/AJAX

                  Und? Kann man mit Ajax Dateien hochladen und en Status abfragen?
                  Soweit es mir bekannt ist leider nicht.

                  1. Und? Kann man mit Ajax Dateien hochladen und en Status abfragen?
                    Soweit es mir bekannt ist leider nicht.

                    Nein, aber du kannst während dem Upload einen Request an den Server schicken und dort auswerten, was da bereits angekommen ist. Zwar wird das entsprechende PHP-Script nicht ausgeführt, aber ein entsprechender HTTP-Header wurde bereits an den Server übermittelt diese Information lässt sich auswerten und somit die Restzeit näherungsweise berechnen.

                    Das ist die Variante die z.B. Rapidshare verwendet - das funktioniert ohne Flash und ohne Java - allerdings eben nur "geschätzt".

                    1. Zwar wird das entsprechende PHP-Script nicht ausgeführt, aber ein entsprechender HTTP-Header wurde bereits an den Server übermittelt diese Information lässt sich auswerten

                      http://pecl.php.net/package/uploadprogress
                      http://www.suchtwolke.de/2007/06/22/fortschrittsbalken-bei-einem-datei-upload-mittels-php-und-uploadprogress-pecl/

                      Mathias

                    2. Was genau meinst du mit "geschätzt"? Eine verbleibende Zeit ist immer geschätzt, da die Berechnungsformel davon ausgeht dass die Übertragungsrate gleich bleibt.

                      1. Was genau meinst du mit "geschätzt"? Eine verbleibende Zeit ist immer geschätzt, da die Berechnungsformel davon ausgeht dass die Übertragungsrate gleich bleibt.

                        Richtig, genau das ist gemeint - allerdings kannst du mit dieser Methode zumindest exakt feststellen, wieviel bereits hochgeladen wurde.

                    3. Hello,

                      Nein, aber du kannst während dem Upload einen Request an den Server schicken und dort auswerten, was da bereits angekommen ist. Zwar wird das entsprechende PHP-Script nicht ausgeführt, aber ein entsprechender HTTP-Header wurde bereits an den Server übermittelt diese Information lässt sich auswerten und somit die Restzeit näherungsweise berechnen.

                      Wie geht denn das?
                      Komme ich denn mit einem AJAX-Request an irgendwelche Daten, die mein Client gerade per "Normalrequest" abgesendet hat? Das sind doch zwei ganz unabhängige Requests, oder habe ich da etwas falsch verstanden?

                      Aber Achtung: bevor wir hier weiterdiskutieren, müssen wir erst EKKi fragen, ob wir das dürfen.

                      Liebe Grüße aus dem schönen Oberharz

                      Tom vom Berg

                      --
                      Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de
                      1. Wie geht denn das?
                        Komme ich denn mit einem AJAX-Request an irgendwelche Daten, die mein Client gerade per "Normalrequest" abgesendet hat? Das sind doch zwei ganz unabhängige Requests, oder habe ich da etwas falsch verstanden?

                        Das sind dann mehrere getrennte Requests, ja. In erster Linie werden die Daten an den Server geschickt - somit bekommt dieser mit. Sobald der HTTP-Upload läuft, wird ein zweiter Request (per xmlhttprequest) nachgeschickt, dieser spricht ein anderes Script an, welches die Daten eines der Session zugehörigen Uploads ermittelt und wieder an den Client liefert. Wie's genau funktioniert wurde bereits als Antwort auf meinen Post erklärt/verlinkt.

                        Aber Achtung: bevor wir hier weiterdiskutieren, müssen wir erst EKKi fragen, ob wir das dürfen.

                        Warum dieses?

                        1. Hello,

                          ich bin inzwischen mal den Links von molily
                          https://forum.selfhtml.org/?t=187148&m=1243762 gefolgt.
                          Da muss also noch etwas gebastelt werden, damit es funktioniet.
                          Mal sehen, ob ich es verstehe, wie es geht :-)

                          Aber Achtung: bevor wir hier weiterdiskutieren, müssen wir erst EKKi fragen, ob wir das dürfen.
                          Warum dieses?

                          https://forum.selfhtml.org/?t=187145&m=1243779

                          Liebe Grüße aus dem schönen Oberharz

                          Tom vom Berg

                          --
                          Nur selber lernen macht schlau
                          http://bergpost.annerschbarrich.de
                          1. Ich versuch mich gerade an swfUpload. Leider scheint die aufgerufene PHP nicht richtig abzulaufen. Woran kann das liegen? Es soll ein Profilbild hochgeladen werden, leider wird dieses nicht in die DB eingetragen. Der Code wird schlichtweg nicht ausgeführt. :o(

                            Dies ist der Code-Abschnitt, der nach dem Upload ausgeführt wird.

                            Ein Profilbild wird einfach mit in die Gallerie gespeichert, allerdings wird diesem kein Album zugeordnert und kann somit als Profilbild identifiziert werden.

                                //Hier wird das Bild in die DB gespeichert!  
                                //Schauen wir erstmal ob der Upload ein erfolg war...  
                                //Sessionwert löschen  
                                unset($_SESSION['profilepic_upload_error']);  
                              
                                if($_FILES['file']['error'] != 0) {  
                                  //Da ist etwas schief gegangen!  
                                  //Wir speichern den Vorfall in der Session um anschließend unter dem alten Profilbild die Fehlermeldung mit anzuzeigen...  
                                  $_SESSION['profilepic_upload_error']="ulerr";  
                                  add_log_entry(  
                                      $db,  
                                      $_SESSION['userid'],  
                                      $_SERVER['REMOTE_ADDR'],  
                                      "error",$uploadphp,  
                                      "file_upload_failed",  
                                      "",date("Y-m-d H:i:s"));  
                                  exit;  
                                }  
                              
                                //Sollte das Script dies überlebt haben, so fügen wir das Bild der Datenbank hinzu  
                              
                                //Zuerst prüfen ob bereits ein Profilbild vorliegt  
                              
                                $q=""; //Query geheim :P  
                              
                                $r=$db->query($q);  
                                if($r) {  
                                  $rows=$r->num_rows();  
                                  if($rows==0) {  
                                    //Es existiert kein Profilbild, also INSERT  
                                    $picdate=date("Y-m-d H:i:s");  
                                    //Wir lassen einige Spalten leer, welches als Indiz für das Profilbild gilt.  
                                    $q=""; //Query geheim :P  
                                    $r=$db->query($q);  
                                    if(!$r) {  
                                      //Da ist etwas schief gegangen!  
                                      //Wir speichern den Vorfall in der Session um anschließend unter dem alten Profilbild die Fehlermeldung mit anzuzeigen...  
                                      $_SESSION['profilepic_upload_error']="dberr";  
                                      add_log_entry(  
                                          $db,  
                                          $_SESSION['userid'],  
                                          $_SERVER['REMOTE_ADDR'],  
                                          "error",$uploadphp,  
                                          "could_not_create_entry",  
                                          $db->errno.": ".$db->error,date("Y-m-d H:i:s"));  
                                      exit;  
                                    }  
                              
                                    //Nun fragen wir die neue Bildid ab  
                                    $q="SELECT * FROM `photo_albums_pictures`  
                                        WHERE `userid` ={$_SESSION['userid']}  
                                        AND   `albumid`=0";  
                              
                                    $r=$db->query($q);  
                                    if($r) {  
                                      if($r->num_rows()>0) {  
                                        $fa=$r->fetch_assoc();  
                                        $newpicid=$fa['id'];  
                                        unset($fa); unset($r);  
                                      }  
                                    }  
                                  } else {  
                                    //Nun fragen wir die neue Bildid ab  
                                    $fa=$r->fetch_assoc();  
                                    $newpicid=$fa['id'];  
                                    unset($fa); unset($r);  
                                  }  
                                }  
                              
                                //Sollte das Script dies überlebt haben, so prüfen wir das hochgeladene Bild einmal:  
                                $image_attribs = getimagesize($_FILES['file']['tmp_name']);  
                                $image_width = $image_attribs[0];  
                                $image_height = $image_attribs[1];  
                              
                                //Ist das Format ok?  
                                if(!($image_attribs[2]==IMAGETYPE_JPG || $image_attribs[2]==IMAGETYPE_PNG || $image_attribs[2]==IMAGETYPE_GIF)) {  
                                  //Da ist etwas schief gegangen!  
                                  //Wir speichern den Vorfall in der Session um anschließend unter dem alten Profilbild die Fehlermeldung mit anzuzeigen...  
                                  $_SESSION['profilepic_upload_error']="fmterr";  
                                  exit;  
                                }  
                              
                                //Sollte das Script dies überlebt haben, so prüfen wir die Bildgröße:  
                              
                                //Datei zunächst verschieben  
                                move_uploaded_file($_FILES['file']['tmp_name'],"userdata/gallery/{$newpicid}.jpg");  
                                include("includes/functions.php"); //Funktion für verkleinern einbinden  
                              
                                //Wir verkleinern es auf die richtige Größe. Hat das Bild bereits die richtige Größe, so wird es einfach  
                                //neu in einer geringeren Qualität gespeichert.  
                                resizeImageJPG("userdata/gallery/{$newpicid}.jpg","userdata/gallery/{$newpicid}.jpg",$img_max_width,0,85);  
                              
                                //Jetzt noch bei personal_user  
                              
                                $q=""; //Query geheim :P  
                              
                                $r=$db->query($q);  
                                if(!$r) {  
                                  //Da ist etwas schief gegangen!  
                                  //Wir speichern den Vorfall in der Session um anschließend unter dem alten Profilbild die Fehlermeldung mit anzuzeigen...  
                                  $_SESSION['profilepic_upload_error']="dberr";  
                                  exit;  
                                }
                            
                            1. So langsam hab ich die Schnauze voll!

                              sfwupload hält es nicht für nötig die Files als POST-Daten anzuhängen oder weitere POST-Daten zu senden...

                              Alles was meine PHP bekommt ist: Nichts...

                              Ist es vielleicht nicht möglich auf die gleiche PHP hochzuladen?
                              Per POST soll übergeben werden, dass das Upload erfolgt ist.
                              Aber leider bekomme ich nichtmal $_FILES['Filedata'] ...

                              1. Hi,

                                So langsam hab ich die Schnauze voll!

                                Wen wundert's - geht mir mit dir beim Lesen dieses Threadverlaufes ähnlich ...

                                sfwupload hält es nicht für nötig die Files als POST-Daten anzuhängen oder weitere POST-Daten zu senden...

                                Alles was meine PHP bekommt ist: Nichts...

                                Habe es gerade mit dem Minimalbeispiel aus dem Samples-Paket ausprobiert: Ein Textfeld hinzugefügt, Kontrollausgabe von $_POST im empfangenden Script - und wie erwartet taucht der Textfeldinhalt dort auch auf.

                                Ist es vielleicht nicht möglich auf die gleiche PHP hochzuladen?

                                Warum sollte es das nicht sein?
                                Ich habe mich jetzt zwar nicht intensiver damit beschäftigt, sehe aber erst mal keinen Hinderungsgrund.
                                Zwei Scriptinstanzen lassen sich auch von Code, der in nur einer Datei auf dem Server liegt, starten.

                                Per POST soll übergeben werden, dass das Upload erfolgt ist.

                                Wann, an wen, wozu?
                                Das bekommt der Server, PHP und damit das Script doch auch selber mit.

                                MfG ChrisB

                                --
                                Light travels faster than sound - that's why most people appear bright until you hear them speak.
                                1. Ich verstehe nicht, wieso es bei mir nicht geht...

                                  Der Code meiner PHP passt hier leider nicht rein :(

                                  Einige Sachen können verschoben sein, da ich mit einem anderen Editor arbeite, der irgendwie Tabs und Leerzeichen beliebig mischt -_-.

                                  Hier die Javascripts:

                                  <script type="text/javascript" src="js/ajax/loadpage.js"></script>  
                                  <script type="text/javascript" src="upload/swfupload.js"></script>  
                                  <script type="text/javascript" src="upload/plugins/swfupload.speed.js"></script>
                                  

                                  Script für die swfupload initialisation:

                                          var swfu;  
                                          function fileDialogComplete() {  
                                          	this.startUpload();  
                                          }  
                                          function uploadStart(file) {  
                                          	try {  
                                          		updateDisplay.call(this, file);  
                                          		document.getElementById("btnCancel").style.display="inline";  
                                          	}  
                                          	catch (ex) {  
                                          		this.debug(ex);  
                                          	}  
                                          }  
                                          function uploadProgress(file, bytesLoaded, bytesTotal) {  
                                          	try {  
                                          		updateDisplay.call(this, file);  
                                          	} catch (ex) {  
                                          		this.debug(ex);  
                                          	}  
                                          }  
                                          function uploadError(file, errno, message) {  
                                            switch (errno) {  
                                              case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:  
                                                alert("Die Datei, die Du hochladen wolltest ist zu groß!");  
                                                break;  
                                              case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:  
                                                alert("Der Server gab einen Fehler zurück! Verbindung fehlgeschlagen!");  
                                                break;  
                                              case SWFUpload.UPLOAD_ERROR.IO_ERROR:  
                                                alert("Die Verbindung ist unerwartet abgebrochen!");  
                                                break;  
                                              case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:  
                                                alert("Der Server hat den Upload zurückgewiesen! Wende dich an einen Administrator!");  
                                                break;  
                                              case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:  
                                                alert("Die Datei entspricht nicht den angegebenen Dateitypen! Wähle eine Datei in den angegebenen Formaten!");  
                                                break;  
                                              case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:  
                                                alert("Upload abgebrochen!");  
                                                break;  
                                              case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:  
                                                alert("Upload abgebrochen!");  
                                                break;  
                                              }  
                                              document.getElementById("btnCancel").style.display="none";  
                                          }  
                                          function uploadSuccess(file, serverData) {  
                                          	try {  
                                          		this.customSettings.tdCurrentSpeed.innerHTML = SWFUpload.speed.formatBPS(file.averageSpeed);  
                                              this.customSettings.tdTimeRemaining.innerHTML = "0 s";  
                                          		this.customSettings.tdPercentUploaded.innerHTML = SWFUpload.speed.formatPercent(file.percentUploaded) + ", Erfolgreich!";  
                                          	} catch (ex) {  
                                          		this.debug(ex);  
                                          	}  
                                          }  
                                          function uploadComplete(file) {  
                                          	if(this.getStats().successful_uploads) {  
                                              this.customSettings.tdPercentUploaded.innerHTML = "100%, Erfolgreich!";  
                                    
                                        		  //Hochgeladenes Bild darstellen  
                                        		  ajaxLoadPage("'.$uploadphp.'?where=get_profile_picture","img");  
                                            }  
                                    
                                            document.getElementById("btnCancel").style.display="none";  
                                          }  
                                          function updateDisplay(file) {  
                                          	this.customSettings.tdCurrentSpeed.innerHTML = SWFUpload.speed.formatBPS(file.currentSpeed);  
                                          	this.customSettings.tdTimeRemaining.innerHTML = SWFUpload.speed.formatTime(file.timeRemaining);  
                                          	this.customSettings.tdPercentUploaded.innerHTML = SWFUpload.speed.formatPercent(file.percentUploaded);  
                                          }  
                                          window.onload = function () {  
                                            var settings = {  
                                            				file_dialog_complete_handler: fileDialogComplete,  
                                            				upload_start_handler : uploadStart,  
                                            				upload_progress_handler : uploadProgress,  
                                            				upload_success_handler : uploadSuccess,  
                                            				upload_complete_handler : uploadComplete,  
                                            				upload_error_handler : uploadError,  
                                                    upload_url : "'.$uploadphp.'",  
                                                    flash_url : "upload/swfupload.swf",  
                                                    file_size_limit : "'.$filesizelimit.'",  
                                                    file_types : "'.$filetypes.'",  
                                                    file_types_description : "'.$ftdescrip.'",  
                                                    file_upload_limit : '.$maxfiles.',  
                                                    file_queue_limit : 0,  
                                                    custom_settings : {  
                                            					tdCurrentSpeed : document.getElementById("tdCurrentSpeed"),  
                                            					tdTimeRemaining : document.getElementById("tdTimeRemaining"),  
                                            					tdPercentUploaded : document.getElementById("tdPercentUploaded")  
                                            				},  
                                            				file_post_name : "file",  
                                                    post_params : {  
                                                      "uploaded" : "yes",  
                                                      "PHPSESSID" : "'.session_id().'"  
                                                    },  
                                                    use_query_string : true,  
                                                    preserve_relative_urls : false,  
                                                    // Button settings  
                                                    button_image_url: "images/btnupload.png",  
                                                    button_width: "80",  
                                                    button_height: "24",  
                                                    button_placeholder_id: "spanButtonPlaceHolder"  
                                            };  
                                            swfu = new SWFUpload(settings);  
                                            document.getElementById("btnCancel").style.display="none";  
                                          };
                                  

                                  Ich finde es auch sehr unsicher die Sessionid mitten in die HTML-Ausgabe zu setzten...

                                  Template:

                                  <div class="tabcont">  
                                    {foreach from=$tabs item=tab}  
                                      <ul class="tabs">  
                                        <li class="tab{$tab.sel}{$tab.class}"><div id="tab{$tab.id}" class="tab{$tab.sel}{$tab.class}" onClick="{$tab.onClick}">{$tab.title}</div></li>  
                                      </ul>  
                                    {/foreach}  
                                    <div class="tabcontent" id="tabcontent">  
                                      <h2>{$gtitle}</h2>  
                                      <p>  
                                        {if $profilepic!="error:nopic;"}  
                                        Aktuelles Profilbild:<br />  
                                        <div class="transparent" id="img"><img src="{$profilepic}" alt="Profilbild" /></div>  
                                        {else}  
                                        <div class="transparent" id="img">Du hast noch kein Profilbild hochgeladen!</div>  
                                        {/if}  
                                      </p>  
                                  		<table class="cpres" width="480px">  
                                        <tr>  
                                  				<td class="cpres">Fortschritt:</td>  
                                  				<td id="tdPercentUploaded" class="cpres"  colspan="3"></td>  
                                        </tr>  
                                  			<tr class="cpres">  
                                  				<td class="cpres" width="25%">Übertragunsrate:</td>  
                                  				<td id="tdCurrentSpeed" class="cpres" width="25%"></td>  
                                  				<td class="cpres" width="25%">Verbleibende Zeit:</td>  
                                  				<td id="tdTimeRemaining" class="cpres" width="25%"></td>  
                                  			</tr>  
                                  			<tr class="cpres">  
                                  				<td class="cpres" colspan="2">  
                                            <span id="spanButtonPlaceHolder"></span>  
                                          </td>  
                                  				<td class="cpres" style="text-align:right;" colspan="2">  
                                            <input id="btnCancel" type="button" class="button" value="Abbrechen" onclick="swfu.cancelQueue();" disabled="" />  
                                          </td>  
                                  			</tr>  
                                  		</table>  
                                      <h3>Bedingungen</h3>  
                                    	<ul>  
                                        <li>Es sind Bilder in den Formaten PNG, GIF und JPG erlaubt.</li>  
                                        <li>Die maximale Dateigröße beträgt {$filesizelimit}.</li>  
                                        <li>Die maximale Bildgröße beträgt 4000x4000 Pixel.</li>  
                                        <li>Das Bild wird anschließend automatisch auf {$img_size} Pixel verkleinert, das Seitenverhälntnis wird beibehalten!</li>  
                                      </ul>  
                                      <p>  
                                        Hinweis: Das Bild wird in deiner Gallerie hochgeladen und als "profilbild" makiert.<br />  
                                        Du kannst dort dieses Bild allerdings weder sehen, noch bearbeiten,<br />es kann nur hier geändert  
                                        oder gelöscht werden.  
                                      </p>  
                                    </div>  
                                  </div>
                                  
                                  1. Jetzt bekomme ich wenigstens die POST-Daten, leider aber immer noch keine $_FILE['Filedata'].

                                    Settings:

                                              var settings = {  
                                                flash_url : "upload/swfupload.swf",  
                                                upload_url : "'.$uploadphp.'",  
                                                post_params : {  
                                                  "uploaded" : "yes",  
                                                  "PHPSESSID" : "'.session_id().'"  
                                                },  
                                                file_size_limit : "1.5 MB",  
                                                file_types : "*.jpg;*.png;*.gif",  
                                                file_types_description : "Bilddateien",  
                                                file_upload_limit : 1,  
                                                file_queue_limit : 0,  
                                                custom_settings : {  
                                                	tdCurrentSpeed : document.getElementById("tdCurrentSpeed"),  
                                                	tdTimeRemaining : document.getElementById("tdTimeRemaining"),  
                                                	tdPercentUploaded : document.getElementById("tdPercentUploaded")  
                                                },  
                                                debug: false,  
                                                // Button settings  
                                                button_image_url: "images/btnupload.png",  
                                                button_width: "80",  
                                                button_height: "24",  
                                                button_placeholder_id: "spanButtonPlaceHolder",  
                                                file_dialog_complete_handler: fileDialogComplete,  
                                                upload_start_handler : uploadStart,  
                                                upload_progress_handler : uploadProgress,  
                                                upload_success_handler : uploadSuccess,  
                                                upload_complete_handler : uploadComplete,  
                                                upload_error_handler : uploadError  
                                              };
                                    

                                    Ich weiß nicht wieso ich nach den Änderungen die Postdaten bekomme, aber immer noch nicht das File selbst.

                                    1. Ist da denn niemand mehr? Ich brauche dringend Hilfe!
                                      Ich verstehe nicht wieso ich das verdammte Array $_FILES['Filedata'] nicht bekomme!!! Q_Q

                                      Bin schon echt am Verzweifeln!

                                      1. Hello,

                                        Ich verstehe nicht wieso ich das verdammte Array $_FILES['Filedata'] nicht bekomme!!! Q_Q

                                        Hast Du denn wenigstens schon mal geschaut, ob Du wenigstens das Array $_FILES bekommst und was dort dinsteht?

                                        echo htmlspecialchars(print_r($_FILES,1));

                                        Liebe Grüße aus dem schönen Oberharz

                                        Tom vom Berg

                                        --
                                        Nur selber lernen macht schlau
                                        http://bergpost.annerschbarrich.de
                                        1. Leider führt jedes ECHO ins Leere, da es ja ein interner Aufruf vom Flashplugin ist. Ich kann es aber in ein LOG schreiben lassen.
                                          Komisch ist auch, da ja

                                          if(!isset($_FILES[$upload_name]))

                                          Zutrifft habe ich als Fehler

                                          header("HTTP/1.1 500 File Upload Error");

                                          wie im Multiupload-Demo gemacht.
                                          Denkst du uploadError wird mal ausgelöst???

                                          Nein! -_-

                                          1. Jetzt habe ich alles hinbekommen. Leider ist es ziemlich umständlich...
                                            Hat jemand eine Idee wie ich noch Postdaten einer Form bei legen kann? Vielleicht dass neue Postdaten an swfuploader gehängt werden?

                                2. Wen wundert's - geht mir mit dir beim Lesen dieses Threadverlaufes ähnlich ...

                                  Für's Protokoll: damit ist das Highjacking des Astes gemeint (wird allgemein als sehr unhöflich angesehen) - eigentlich gings hier um die AJAX-Geschichte. SWFUpload war Thema in einem anderen Ast.

                                  Btw: ich hab nichts gehen Themendrift, aber so kann man dem Diskussionsfaden nur sehr schwer folgen.

                      2. Aber Achtung: bevor wir hier weiterdiskutieren, müssen wir erst EKKi fragen, ob wir das dürfen.

                        Na, die Stelle im Quellcode habe ich dir ja jetzt gezeigt. ;)

                        Mathias

  2. ich habe mir im Web schon mehr als ein Dutzend Lösungen für ein Uploader angesehen, der auf PHP basis ist und auch eine Fortschrittsanzeige beinhaltet.

    Diese Uploader haben i.d.R. nichts mit PHP zu tun, sie arbeiten auf Basis von JavaScript sowie Flash oder Java. Z.B. SWFUpload.

    Wenn du bereits einen simplen PHP-Uploader gebaut hast, also ein PHP-Script, an das das Dateiupload-Formular geschickt wird, dann musst du auf PHP-Seite eigentlich nichts mehr tun.

    Mathias