Seite 1 von 2
Mit QFtp get() Datei herunterladen
Verfasst: 1. Mai 2009 14:43
von fm94
Ich will mit Hilfe von QFtp::get() eine einzelne Textdatei von einem Server herunterladen.
Ich habe den folgenden Code geschrieben, aber es wird lediglich die Datei actionFile im Verzeichnis erstellt, jedoch nicht die Datei vom Server heruntergeladen.
Code: Alles auswählen
void Dialog::getActionFile()
{
actionFile->open(QIODevice::WriteOnly | QIODevice::ReadWrite);
ftp->connectToHost("meinedomain.de");
ftp->login("user", "pw");
ftp->cd("ordner1");
ftp->cd("ordner2");
ftp->get("action.txt",actionFile,QFtp::Binary);
ftp->close();
actionFile->close();
}
kann mir jemand sagen, was daran falsch ist?
Verfasst: 1. Mai 2009 17:55
von Willi2793
Hm, man kann an dem Schnipsel nicht erkennen ob Du einen Eventlopp hast. Der ist aber notwendig damit QFtp funktioniert.
Verfasst: 1. Mai 2009 18:36
von fm94
nein, das habe ich nicht...
könntest du das vielleicht etwas genauer erklären?
Verfasst: 1. Mai 2009 18:45
von Willi2793
QT basiert auf einem Signal-Slot Prinzip (
Docu). Damit diese Signale korrekt funktionieren muss der Eventloop gestartet sein. Dies passiert in der Haupt-Application in etwa folgendermassen:
Das exec() startet den Eventloop und darin werden dann die Signale verarbeitet. Und QFtp nutzt diese Signale um zu arbeiten. Auch hier hilft die
Docu.
Verfasst: 1. Mai 2009 19:13
von fm94
ich weiß nicht, ob das gemeint ist, und ob es auch am richtigen platz steht, aber es gibt ja noch die main.cpp und die sieht so aus:
Code: Alles auswählen
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();
return a.exec();
}
Verfasst: 1. Mai 2009 19:33
von Willi2793
Gut, dann gehen wir mal davon aus das der Eventloop läuft. Dann würde ih mal darauf tippen das Du das actionFile schließt bevor die Datei empfangen wurde.
Verfasst: 1. Mai 2009 20:29
von upsala
QFtp wird geschlossen, bevor die Datei empfangen wurde, da zwischen dem get() und dem close() überhaupt keine EventLoop laufen kann.
Verfasst: 1. Mai 2009 23:20
von fm94
das heißt ich muss es wie schreiben??
Verfasst: 2. Mai 2009 12:33
von Willi2793
Du mußt die Signale die QFtp sendet und die Du benötigst empfangen und darauf reagieren. Steht alels in den Links die ich gepostet habe.
Re: Mit QFtp get() Datei herunterladen
Verfasst: 22. August 2011 11:20
von aed
Hallo zusammenn
hat hier jetzt jemand ein funktionsfähiges Beispiel?
Re: Mit QFtp get() Datei herunterladen
Verfasst: 22. August 2011 11:27
von upsala
Re: Mit QFtp get() Datei herunterladen
Verfasst: 22. August 2011 11:58
von aed
Ja habe ich gelesen. Ist nur ein riesenbeispiel bei dem ich mich nicht recht zurechtfinde. (Fang ja gerade erst an)
Ich will mich ja nur Verbinden und eine Datei laden. Ein Fenster mit Buttons und dem FTP Baum brauche ich nicht.
Re: Mit QFtp get() Datei herunterladen
Verfasst: 22. August 2011 12:40
von Christian81
Dann eben
http://doc.qt.nokia.com/latest/qftp.html#details - dort steht genau wie man eine Datei vom Server lädt.
Re: Mit QFtp get() Datei herunterladen
Verfasst: 22. August 2011 14:12
von aed
Hallo. Naja das hilft mir leider auch nicht ganz so weit.
wenn ich hier mal die ersten zeilen eingeb kommt gleich das erste Problem:
QFtp *ftp = new QFtp(parent);
Wie bzw. als was definiere ich parent?
Re: Mit QFtp get() Datei herunterladen
Verfasst: 22. August 2011 15:36
von DBGTMaster
als Parent wird das übergeordnete QObject angegeben.,.. Wird dieses zerstört, wird auch das child (sprich hier QFTP) zerstört... ( -> Memory Leak verhindern...)
Am besten, du beginnst mit den Grundlagen von Qt, und stürzt dich nicht direkt in die Welt des FTPs..
lG