Der Titel sagts schon: Liebster RGH, bitte ermögliche uns auch Uploads im Hintergrund.
FTP-Upload im Hintergrund
-
-
-
Und mir fällt gerade auf, dass es noch ganz wichtig ist, wie bei DownloadFile() eine Möglichkeit zu haben zu überprüfen wieviel schon hoc-/runtergeladen ist. Das ist unerlässlich für einen Fortschrittsbalken etc.!
-
Dafür gibt es keine FTP-Funktion. Das musst Du selbst ausrechnen. Du kennst ja die Größe der Download-Datei und kannst sie mit dem heruntergeladenen Teil vergleichen.
Gruß
Roland -
Oh ok. Ich hatte auf so ne Art %Downloading gehofft.
-
... und auch bei FTP("Upload",...) wird es den zusätzlichen Parameter für den Upload im Hintergrund geben.
Gruß
Roland -
...wo ich dann per FTP("GetFileSize" prüfen muss wie weit es ist?
-
So schaut's aus!
Gruß
Roland -
Wie schon im anderen Forum geschrieben funktioniert Modus 1 bei mir nicht, sie Mininalbeispiel. Bei Modus 0 wieder ohne Probleme.
-
Ich habe es gerade mehrfach getestet. Bei mir funktioniert es:
Code
Alles anzeigendeclare int fsent, fslok cls print ftp("Connect","name","passwort","www.irgendwo.de","21") print %ftpconnected print ftp("SetDir", "verzeichnis") print ftp("GetDir") print ftp("ListDir","FTPLIST.TXT", 1) move("FileToList","FTPLIST.TXT") var datei$ = listbox$("Dateien",2) print datei$ if datei$ > "" fsent = ftp("getFilesize", datei$) print fsent print ftp("Download", datei$, "Test.dat", 1) fslok = 0 while %ftprunning waitinput 1000 fslok = filesize(datei$) print fslok, $ftpstatus endwhile print "--- Upload ---" print ftp("Upload", "Test.dat", "Test.dat", 1) while %ftprunning print $ftpstatus waitinput 100 endwhile clearlist print ftp("deletefile","test.dat") print ftp("ListDir","FTPLIST.TXT", 1) move("FileToList","FTPLIST.TXT") listbox$("Dateien",2) endif print $ftpstatus waitinput print ftp("Disconnect")
Das Programm listet die Dateien im gewählten Verzeichnis auf und lädt die in der Listbox gewählte Datei hinunter. Anschließend wird "Test.dat" hochgeladen und dann wieder gelöscht. Wenn man das "deletefile" auskommentiert, taucht die Datei im Listing auf.Gruß
Roland -
Wie groß sind deine Dateien? Meine sind etwa 400MB, vielleicht liegts daran.
-
Mir fällt gerade auf: Upload im Hintergrund geht erst ab der nächsten Subscriptionsversion!
Gruß
Roland -
Der Code funktioniert bei mir nicht. Es wird aufgelistet, aber GetFileSize liefert -1 zurück. Die Datei ist aber vorhanden, ich habe sie ja aus der Liste ausgewälht. Der Download startet, es kommt eine Fehlermeldung, dass die Datei nicht vorhanden ist (FileSize) etc. etc.
FTPStatus gibt immer "150 open BINARY mode data connection for datei (richtige dateigröße)" aus.Edit: Ich sehe gerade, dass es nicht funktionieren sollte. "datei" hat ja den Dateinamen auf dem Server, auf meinem Rechner wird die Datei aber in "Test.dat" ubenannt. Teste weiter...
Edit2: Mit angepasstem Dateinamen kommen keine Fehlermeldungen, aber Filesize liefert während der gesamten Operation "0". -
Edit2: Mit angepasstem Dateinamen kommen keine Fehlermeldungen, aber Filesize liefert während der gesamten Operation "0".
Da kann ich leider nichts daran ändern. Ich habe aber festgestellt, wenn ich z.B. während des Downloads in den Total-Commander wechsle und mir das Verzeichnis anzeigen lasse und dann wieder zurück, wird die augenblickliche Größe der Datei angezeigt.
Der FTPStatus 150 besteht während des ganzen Download- und dann auch Upload-Vorgangs, sobald der Download oder Upload gestartet ist. Wenn er ordnungsgemäß beendet wurde, wechselt er auf den Status 226.
Gruß
Roland -
Ich will nicht nerven, aber Delphi selbst hat keine Funktion beim Download den Forstschritt zu überwachen?
-
Nicht, dass ich wüsste.
Gruß
Roland -
Mist. Da such ich weiter nach ner geeigneten DLL.
-
https://www.limilabs.com/ftp
Sieht vielverpsrechend aus, aber ist eine .net-Library. Leider bräuchten wir da einen Wrapper. Naja, und kostet... -
Oder direkt per API:
https://msdn.microsoft.com/en-us/library/…0(v=vs.85).aspx
Aber, das dauert bis ich das durch hab... -
Ja, diese API gab es leider erst lange nachdem XProfan schon die FTP-Funktion hatte. Und ein 100%ig kompatibler Umstieg auf diese API ist nicht ohne Weiteres möglich. (Zumal ich bis X2 ja auch noch zu Windows 9x kompatibel bleiben wollte. Seit X3 ist die älteste Version, mit der ich teste, allerdings Windows XP.)
Aber mittels der umfangreichen API-Funktionen in XProfan sollte sich diese API nutzen lassen.Gruß
Roland
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!