Ergebnis 1 bis 3 von 3
  1. #1
    Englischer Kantapfel
    Themenstarter
    Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086

    Dateiupload mit Statusanzeige

    Ich habe mir gerade überlegt, wie man eine Statusanzeige bei einem Dateiupload realisiert.

    Ich habe daran gedacht, lokal ein PHP Skript auszuführen, dass mir entweder via GET/POST oder FTP-Protokoll Daten an den Server übermittelt. Mit JS (AJAX) könnte ich dann das PHP-Skript aufrufen und eine Statusanzeige realisieren.

    Da ich lediglich in PHP gut bewandert bin und keine andere Programmiersprache erlernen möchte (aus zeitlichen Gründen, ist nur ein kleines Hobby), wäre ich um eine Lösung in PHP erwünscht.

  2. #2
    Englischer Kantapfel
    Themenstarter
    Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086
    Im Moment sieht es so aus:

    Man ruft die test.html auf, klickt auf den Link und die test.php lädt eine Datei runter. Dabei wird kontinuierlich der Status in Prozent ausgegeben. Die test.html ruft diese ab und gibt jeweils die letzte Zeile aus.

    test.php
    Code:
    <?php
        $fp = fsockopen("www.test.com", 80, $errno, $errstr, 30);
        $filesize = 7 * 1024 * 1024 + 90000;
        $file = null;
        if (!$fp) {
            echo "$errstr ($errno)<br />\n";
        } else {
            $out = "POST /DispMap.psd HTTP/1.1\r\n";
            $out .= "Host: www.test.com\r\n";
            $out .= "Connection: Close\r\n\r\n";
            fwrite($fp, $out);
            while (!feof($fp)) {
                $file .= fgets($fp, 128);
                $readen_bytes = strlen($file);
                $percent = $readen_bytes / $filesize * 100;
                echo $percent, "\n";
            }
            fclose($fp);
        }
        
        $handle = fopen('DispMap.psd', 'w+');
        fwrite($handle, $file);
        fclose($handle);
    ?>
    test.html
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Insert title here</title>
            <script type="text/javascript">
                function ajaxBuild() {
                    if(window.ActiveXObject) {
                        http_request = new ActiveXObject('Microsoft.XMLHTTP');
                    }
                    else if(window.XMLHttpRequest) {
                        http_request = new XMLHttpRequest();
                    }
                    http_request.onreadystatechange = showStatus;
                    http_request.open('GET', 'test.php', true);
                    http_request.send(null);
                }
                function showStatus() {
                    if(http_request.readyState == 3) {
                            var answer;
                            answer = http_request.responseText.split("\n");
                            answer = answer.pop();
                            document.getElementById('status').innerHTML = answer;
                            window.setTimeout("emptyFunction()", 1000);
                    }
                }
                function emptyFunction() {
                }
            </script>
        </head>
        <body>
            <a href="javascript:ajaxBuild()">Load File</a><br />
            <br />
            <div id="status">0</div>
        </body>
    </html>
    Die Probleme:

    1. Im Firefox geht es ohne Probleme, der Fortschritt wird mir angezeigt. Safari zeigt mir während des ganzen Vorgangs gar nichts an. Das wäre das erste Problem, das zu lösen wäre.
    edit: Safari ignoriert irgendwie den readyState 3…

    2. Wie rufe ich die Dateigrösse mit den Socketfunktionen ab?

    3. Das window.setTimeout funktioniert noch nicht, ich muss die Zeile wohl nach ganz oben in der Funktion schieben. Die Funktion ist auch ziemlich sinnfrei.

    4. Die Downloadgeschwindigkeit unterliegt extremen Schwankungen. Getestet mit einer 150 MB grossen Datei.


    Das ganze ist halt momentan so aufgebaut, dass auf eventuelle Fehler überhaupt nicht eingegangen wird und dann halt eine riesige Fehlerflut kommt.

    Wenn jemand Anregungen hat, bitte melden!

  3. #3
    Wilstedter Apfel Avatar von Slashwalker
    Registriert
    05.2006
    Beiträge
    1.934
    Also ich habe kürzlich auch an einem Dateiupload mit Status gearbeitet. Ich habe dafür Uploadyfy genutzt:
    http://www.uploadify.com
    VAYA CON TIOZ
    Helden leben lange -Legenden sterben nie!
    La Ultima Cerveza!


Ähnliche Themen

  1. interner FTP - Statusanzeige??
    Von aPuschel1972 im Forum Filetransfer
    Antworten: 5
    Letzter Beitrag: 30.12.2009, 00:37
  2. Problem bei grossem Dateiupload auf MobileMe
    Von marcomendez im Forum Webhosting/DSL-Anbieter
    Antworten: 1
    Letzter Beitrag: 19.08.2008, 13:32
  3. Statusanzeige Skype
    Von fridolin im Forum Chatprogramme & VoIP
    Antworten: 0
    Letzter Beitrag: 27.08.2007, 15:30
  4. WLAN Statusanzeige
    Von fotosdeluxe.de im Forum Airport & WLAN
    Antworten: 0
    Letzter Beitrag: 29.05.2007, 14:29
  5. Dateiupload per PHP
    Von NightMare im Forum Web-Programmierung
    Antworten: 5
    Letzter Beitrag: 05.12.2006, 18:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •