Seite 1 von 1

QT QNetworkAccessManager braucht 300MB Ram

Verfasst: 6. April 2010 19:40
von blubsy
Hey,
Ich lade mit QT mehrere Dateien (zwischen 100Mb - 500MB) runter.
Mache das mehr oder weniger mit dem code aus dem Beispiel:

Code: Alles auswählen

QUrl url(pUrl);
        QNetworkRequest request(url);

        QNetworkReply *replay = manager.get(request);
        currentDownloads.append(replay);

        connect(replay, SIGNAL(downloadProgress(qint64,qint64)),
                        SLOT(downloadProgress(qint64,qint64)));
Sobald downloadFinished ausgelöst wird rufe ich ein Funktion auf die die
Daten des QNetworkReply in eine Datei schreibt.

Soweit so gut. Das ganze braucht jetzt halt locker 300 MB Ram.
Was ja schon ein etwas viel ist.

Habe mir jetzt gedacht für den DL part Dateien zu erstellen.
Also wie bei firefox wenn man etwas lad das es in dieser datei gespeicht wird.

Habe dazu in der Docu leider nix gefunden. Habt ihr ne idee?

Verfasst: 6. April 2010 19:47
von kater
300MB vor beginn oder nach beginn des Downloads?

Erst sagst du, dass du den Download in eine Datei schreibst, dann fragst du, ob du den Download nicht lieber in eine Datei schreiben willst??

Verfasst: 6. April 2010 19:53
von blubsy
Wenn der DL läuft braucht er 300.

Ich meinte das so.
Im moment schreibe ich am Ende des Downloads alle Daten in eine Datei.
Ich habe mir nun überlegt das ganze so zu machen immer wenn ich neue Daten bekomme sie direkt in die Datei zu schreiben, sprich die Datei langsam "aufzufüllen" und nicht alles in den Ram lade und dann aufeinmal raus schreibe.

Finde dazu aber leider nix.

Hoffe habs verständlich ausgedrückt.

Verfasst: 6. April 2010 20:15
von kater
Ja jetzt ist es verständlich.

Verfasst: 6. April 2010 20:31
von Christian81
QNetWorkReply ist eine QIODevice also wo ist das Problem?