Zum Inhalt springen

[PHP] - FTP Upload - Fortschrittsanzeige?


Empfohlene Beiträge

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 :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...