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
test.htmlCode:<?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); ?>
Die Probleme: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>
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!
Ergebnis 1 bis 3 von 3
- 03.01.2010, 16:59 #1
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.
- 03.01.2010, 18:34 #2
Geändert von _linx_ (03.01.2010 um 19:04 Uhr)
- 09.01.2010, 13:18 #3
Also ich habe kürzlich auch an einem Dateiupload mit Status gearbeitet. Ich habe dafür Uploadyfy genutzt:
http://www.uploadify.comVAYA CON TIOZ
Helden leben lange -Legenden sterben nie!
La Ultima Cerveza!
Ähnliche Themen
-
interner FTP - Statusanzeige??
Von aPuschel1972 im Forum FiletransferAntworten: 5Letzter Beitrag: 30.12.2009, 00:37 -
Problem bei grossem Dateiupload auf MobileMe
Von marcomendez im Forum Webhosting/DSL-AnbieterAntworten: 1Letzter Beitrag: 19.08.2008, 13:32 -
Statusanzeige Skype
Von fridolin im Forum Chatprogramme & VoIPAntworten: 0Letzter Beitrag: 27.08.2007, 15:30 -
WLAN Statusanzeige
Von fotosdeluxe.de im Forum Airport & WLANAntworten: 0Letzter Beitrag: 29.05.2007, 14:29 -
Dateiupload per PHP
Von NightMare im Forum Web-ProgrammierungAntworten: 5Letzter Beitrag: 05.12.2006, 18:40




Zitieren
