Mit QFtp get() Datei herunterladen

Alles rund um die Programmierung mit Qt
fm94
Beiträge: 14
Registriert: 24. Januar 2009 08:53
Kontaktdaten:

Mit QFtp get() Datei herunterladen

Beitrag 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

QFile* actionFile = new QFile("action.txt");

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?
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

Beitrag von Willi2793 »

Hm, man kann an dem Schnipsel nicht erkennen ob Du einen Eventlopp hast. Der ist aber notwendig damit QFtp funktioniert.
fm94
Beiträge: 14
Registriert: 24. Januar 2009 08:53
Kontaktdaten:

Beitrag von fm94 »

nein, das habe ich nicht...
könntest du das vielleicht etwas genauer erklären?
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

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

Code: Alles auswählen

QApplication app;
.
.
.
app.exec()
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.
fm94
Beiträge: 14
Registriert: 24. Januar 2009 08:53
Kontaktdaten:

Beitrag 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();
}
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QFtp wird geschlossen, bevor die Datei empfangen wurde, da zwischen dem get() und dem close() überhaupt keine EventLoop laufen kann.
fm94
Beiträge: 14
Registriert: 24. Januar 2009 08:53
Kontaktdaten:

Beitrag von fm94 »

das heißt ich muss es wie schreiben??
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

Beitrag 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.
aed
Beiträge: 26
Registriert: 18. August 2011 13:50

Re: Mit QFtp get() Datei herunterladen

Beitrag von aed »

Hallo zusammenn

hat hier jetzt jemand ein funktionsfähiges Beispiel?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Re: Mit QFtp get() Datei herunterladen

Beitrag von upsala »

Schon mal die Doku zu QFtp gelesen?

http://doc.qt.nokia.com/latest/network-qftp.html
aed
Beiträge: 26
Registriert: 18. August 2011 13:50

Re: Mit QFtp get() Datei herunterladen

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Mit QFtp get() Datei herunterladen

Beitrag von Christian81 »

Dann eben http://doc.qt.nokia.com/latest/qftp.html#details - dort steht genau wie man eine Datei vom Server lädt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
aed
Beiträge: 26
Registriert: 18. August 2011 13:50

Re: Mit QFtp get() Datei herunterladen

Beitrag 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?
DBGTMaster
Beiträge: 190
Registriert: 19. August 2010 10:00

Re: Mit QFtp get() Datei herunterladen

Beitrag 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
Antworten