oneside Geschrieben 15. August 2005 Teilen Geschrieben 15. August 2005 Hallo, ist es möglich, den Fortschritt eines FTP-Uploades auszugeben? Wie sieht das mit dem TimeOut bei einem FTP-Upload via PHP aus? kann es sein, dass der Browser nach X Minuten abbricht - wie z.B. bei php copy()? Gruss Oneside Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 15. August 2005 Teilen Geschrieben 15. August 2005 FTP per PHP *verwirrtgugt* sowas geht ? ^^ als Timeout hast du den Script-Timeout des Servers / PHP-Dienstes. Oft 30sec bis 1min irgendwie denke ich du meinst eher Upload per HTML <input type="file"> oder ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oneside Geschrieben 15. August 2005 Autor Teilen Geschrieben 15. August 2005 Wat? Ein Upload per HTML ist niemals möglich. Dieses von Dir angesprochene Feld ist dafür da, um eine Datei auszuwählen, einen Upload kann man damit aber nicht realisieren. Dafür braucht man dann Perl oder PHP z.B. HTML ist keine Programmiersprache (nochdazu mit solchen Funktionen). Das TimeOut kann man bestimmt auch umgehen, da man sonst per PHP-FTP-Verbindung nur eine begrenzte Zeit zur Verfügung hätte. Meine Fragen stehen noch :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 15. August 2005 Teilen Geschrieben 15. August 2005 zu deiner Information. das feld <input type="file"> hat nix mit der Sprache zu tun die auf dem Server läuft. Der Server schiebt das ding in sein Temp-Verzeichnis und wartet dann ob ein Script es haben will. währe ja schrecklich wenn scripts sich plötzlich dateien vom Server holen könnten. Um das auszuprobieren kannst du ja mal einen <input type="file"> an ein Script schicken das "hallo Welt" ausgibt, sonst aber nix tut. ...bringst mich gerade zum Grübeln...gilt der Timeout für den Upload....oder für das was danach folgt ? ... eigentlich dürfte der Upload ja nix mit dem Script zu tun haben...hmmmm..... werd gleich mal googlen ob ich da mehr drüber finde. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oneside Geschrieben 15. August 2005 Autor Teilen Geschrieben 15. August 2005 zu deiner Information. das feld <input type="file"> hat nix mit der Sprache zu tun die auf dem Server läuft. Der Server schiebt das ding in sein Temp-Verzeichnis und wartet dann ob ein Script es haben will. währe ja schrecklich wenn scripts sich plötzlich dateien vom Server holen könnten. Sorry, aber das hat leider nix mit meiner Frage zu tun. Ich möchte Dateien per PHP über eine FTP-Verbindung übertragen. Wie ich die Datei jetzt auswähle (ob per input-feld oder nicht) ist gar nicht relevant für meine Frage.... Ich möchte wissen, ob es möglich ist, während der Übertragung einer Datei per PHP den Fortschritt des Prozesses auszugeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 15. August 2005 Teilen Geschrieben 15. August 2005 Ich möchte wissen, ob es möglich ist, während der Übertragung einer Datei per PHP den Fortschritt des Prozesses auszugeben. Ich sag jetzt einfach mal Nein. Die FTP-Funktionalität in PHP ist viel zu weit "oben" angesiedelt. Um das zu erreichen, müsstest du viel mehr Kontrolle über die FTP-Verbindung haben und genau wissen, was da gerade passiert etc. Ich kenn die Funktionen in PHP jetzt nicht, stell mir das aber wie die MySQL Funktionen vor o.ä. Also ftp_upload(Host, File); oder so. Damit stösst du den Upload nur an, hast aber ansonsten keine Kontrolle darüber. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 15. August 2005 Teilen Geschrieben 15. August 2005 hab mich mal umgesehen und würde daher antworten: nein. Um eine Fortschrittsanzeige zu realisieren bräuchtest du ein 2. Script das auf das 1. zugreift und fragt "wie weit bist du" Clientseitig (Java+Threading) kann ich mir sowas vorstellen. da PHP aber nur auf dem Server läuft und jeder Scriptaufruf für sich unabhängig von anderen... sehe ich da keine Möglichkeit. soweit die Kommentare in anderen Foren ist der FTP Upload auch doppelt Traffic, erst HTTP/HTML auf nen Webserver und von da aus mit PHP wieder woanders hin ... was an dieser aussage dran ist, will ich jetzt nicht kommentieren Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
timtaler Geschrieben 15. August 2005 Teilen Geschrieben 15. August 2005 Es ist theoretisch so möglich wie es mein Vorgänger geschrieben hat, nur wird das ganze sehr sehr sehr ungenau, da das javascript immer wieder den Webserver fragt, wie weit bist Du? In der Traffic Zeit die Dein javascript wieder brauch um im Browser angezeigt zu werden, ist der fileupload ja auch schon weiter. Dann kommt es auch noch auf die php Funktionen an, die Dein Provider Dir freundlicherweise mal sperrt, damit Du auch ja nichts auf dem Server manipulierst Ich an Deiner Stelle würde darauf verzichten und lieber die Zeit in Sicherheitsaspekte stecken, sprich das $_FILES[] Array entsprechend auswerten, damit von aussen keine Angriffe in das System möglich sind Bsp. für einen Bilderupload: $errorflag = "FALSE"; ################################################################################################### $picture_upload_dir= "../../uploaded_pictures/"; $picture_dir = $serverpath . "uploaded_pictures/"; $tempname = $_FILES['datei']['tmp_name']; $name = $_FILES['datei']['name']; $type = $_FILES['datei']['type']; $size = $_FILES['datei']['size']; $fileerror = $_FILES['datei']['error']; $info = getimagesize($tempname); $breite = $info[0]; $hoehe = $info[1]; ################################################################################################### if (isset ($_POST['upload']) && $_POST['upload'] == "eintragen"){ $date=$_POST['date']; // Keinen Titel eingeben if ( $_POST['titel'] == "Titel"){ if (!isset ($error_msg) || $error_msg == "" ){ $error_msg = "Keinen Namen für die Datei angegeben!<br>Bitte geben Sie einen eindeutigen Titel für das Bild ein. Dateiupload abgebrochen!<br>"; } else { $error_msg .= "Keinen Namen für die Datei angegeben!<br>Bitte geben Sie einen eindeutigen Titel für das Bild ein. Dateiupload abgebrochen!<br>"; } $errorflag = "TRUE"; } else{ $titel=$_POST['titel']; $kommentar = $_POST['kommentar']; if ($kommentar == "Bemerkung"){ $kommentar = ""; } $alternate = $_POST['alternate']; if($alternate == "alternativer Text"){ $alternate = ""; } $errorflag = "FALSE"; } $kommentar=$_POST['kommentar']; } else { $error_msg = "Keine Daten vorhanden!<br>"; $errorflag = "TRUE"; } ############################## Dateititel überprüfen ############################################## $titel_check = preg_replace("[\s]", "_", $titel); if ($titel_check == $titel){ $html_to_center .= "Dateititel nicht optimiert<br>"; } else { $titel = $titel_check; $html_to_center .= "Dateititel optimiert! Neuer Titel: " . $titel . "<br>"; } ################################################################################################### $info = getimagesize($tempname); $breite = $info[0]; $hoehe = $info[1]; ################################################################################################### //Bildgrösse if($breite>$max_b || $hoehe>$max_h) { if(!isset($error_msg)){ $error_msg = "Das Bild darf maximal ".$max_b."x".$max_h." Pixel groß sein.<br> Dateiupload abgebrochen!<br>"; } else{ $error_msg .= "Das Bild darf maximal ".$max_b."x".$max_h." Pixel groß sein.<br> Dateiupload abgebrochen!<br>"; } $errorflag = "TRUE"; } ####### Dateigrösse ############################################################################### if($size > $_POST['MAX_FILE_SIZE']) { if(!isset($error_msg)){ $error_msg = "Achtung: Das Bild ist zu gross! Bitte Dateigrösse ändern auf maximal" . $MAX_FILE_SIZE . " Byte(s)<br>"; } else{ $error_msg .= "Achtung: Das Bild ist zu gross! Bitte Dateigrösse ändern auf maximal" . $MAX_FILE_SIZE . " Byte(s)<br>Dateiupload abgebrochen!<br>"; } $errorflag = "TRUE"; } ################################################################################################### if (!is_dir($picture_upload_dir)){ if(mkdir($picture_upload_dir,0777)) { $GLOBALS['picture_upload_dir']= $picture_upload_dir; $html_to_center .= $picture_upload_dir . "wurde erfolgreich eingerichtet!<br>"; } } else{ $html_to_center .= "Ordner " . $picture_upload_dir . " bereits vorhanden<br>"; } ##################### Dateityp feststellen ######################################################## #jpeg oder gif? if($type !="image/pjpeg" && $type!="image/gif" ) { if(!isset($error_msg)){ $error_msg = "nur gif und jpeg Dateien dürfen hochgeladen werden.<br> Dateiupload abgebrochen!<br>"; } else{ $error_msg .= "nur gif und jpeg Dateien dürfen hochgeladen werden.<br> Dateiupload abgebrochen!<br>"; } $errorflag = "TRUE"; } if ($type == "image/pjpeg"){ $dateisuffix = ".jpg" ; $html_to_center .= "Dateiendung: " . $dateisuffix . "<br>"; } elseif($type == "image/gif") { $dateisuffix = ".gif"; $html_to_center .= "Dateiendung: " . $dateisuffix . "<br>"; } ################################################################################################### ############################# Fehler beim hochladen, Fehler ermitteln ############################ if ($fileerror != 0){ if(!isset($error_msg)){ $error_msg = "Es liegt ein Fehler beim hochladen der Datei vor, folgender Fehler wurde ermittelt.<br>"; } else{ $error_msg .= "Es liegt ein Fehler beim hochladen der Datei vor, folgender Fehler wurde ermittelt.<br>"; } switch($fileerror){ case 1: $error_msg .= "Die hochgeladene Datei überschreitet die von Ihrem Provider für das hochladen festgelegte Größe.<br> "; $errorflag = "TRUE"; break; case 2: $error_msg .= "Die hochgeladene Datei überschreitet die in dem HTML Formular für das hochladen festgelegte Größe.<br> "; $errorflag = "TRUE"; break; case 3: $error_msg .= "Die Datei wurde nur teilweise hochgeladen.<br> "; $errorflag = "TRUE"; break; case 4: $error_msg .= "Es wurde keine Datei hochgeladen.<br> "; $errorflag = "TRUE"; break; } } if ($errorflag == TRUE){ print $error_msg; exit; } else{ print $hthml_to_center; } [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jan_m Geschrieben 17. August 2005 Teilen Geschrieben 17. August 2005 Eine Fortschrittsanzeige für einen FTP-Upload via PHP lässt sich realisieren: http://de2.php.net/manual/de/function.ftp-nb-fput.php ^diese Funktion blockiert nicht das script, d.h. das du während des uploads noch andere Funktionien triggern kannst z.B. eine die nachschaut wieviel von der Datei schon auf dem Server ist. ftp_nb_continue -- Nimmt die Übertragung einer Datei wieder auf (nicht blockierend) ftp_nb_fget -- Überträgt den Inhalt einer Datei von dem FTP-Server und speichert sie in eine lokal geöffnete Datei (nicht blockierend) ftp_nb_fput -- Speichert eine geöffnete Datei auf den FTP-Server (nicht blockierend) ftp_nb_get -- Überträgt eine Datei von dem FTP-Server und speichert sie lokal (nicht blockierend) ftp_nb_put -- Speichert eine Datei auf dem FTP-Server (nicht blockierend) Bye Jan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.