QPixmap Upload mit QFtp?

Verschiedenes zu Qt
blenderman
Beiträge: 14
Registriert: 16. Januar 2009 11:38

QPixmap Upload mit QFtp?

Beitrag von blenderman »

Hallo Miteinander,

ich möchte ein Pixmap als Bilddatei (png) auf einem FTP Server speichern. Das Programm läuft bis zum erstellen des Ordners "Test". Nach einer kurzen Pause stürzt es dann ab. Ist die Lösung über den Buffer falsch? Oder stimmt die Syntax noch nicht?

Code: Alles auswählen

 
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
originalPixmap.save(&buffer, "PNG", 20);


 QFtp *ftp = new QFtp();
     ftp->connectToHost("ftp.xxxx.de");
     ftp->login("xxxx","xxxx");
     ftp->mkdir("test");
     ftp->cd("test");
     ftp->put(&buffer, "test.png" );
     ftp->close();
Vielen Dank für eure Hilfe,
Oli
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

ich habe mich damit noch nicht damit beschäftigt, aber ich hätte es über ein QFile gemacht, weil schließlich isses ja ne datei....

Mfg androphinx
blenderman
Beiträge: 14
Registriert: 16. Januar 2009 11:38

Beitrag von blenderman »

Wow, danke für die schnelle Antwort!

Ist der Buffer also nicht die richtige Lösung? Ich hatte mir damit erhofft lokales speichern der Bilddatei zu sparen.

Grüße,
Oli
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

aahh, sorry hatte deinen code schnell überflogen. hmmm, ok, ist doch eigentlich richtig gedacht, etwas komisch aber richtig....

lasse dir den inhalt von buffer mal vor dem senden ausgeben, mach das am besten mit nem stinknormalen text, den du dann als textdatei überträgst....

ansonsten kannste noch versuchen die daten mittels buffer.data() auszulesen...

Mfg androphinx
blenderman
Beiträge: 14
Registriert: 16. Januar 2009 11:38

Beitrag von blenderman »

Du bist echt schnell. Vielen Dank. Hab jetzt den buffer.data() in ein Textlabel geschrieben. In der ersten Zeile ein Strich dann PNG und in der zweiten Zeile ein Quadrat. :lol:

Code: Alles auswählen

ui->label->setText(buffer.data());
Grüße,
Oli
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

http://doc.trolltech.com/4.4/qftp.html#put

Du kannst also nicht davon ausgehen dass nach 'ftp->put(&buffer, "test.png" ); ' schon alles hochgeschickt wurde.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

jo christian hat recht. die funktion wird noch länger ausgeführt... du musst auf das signal commandFinished() warten...

Mfg androphinx
blenderman
Beiträge: 14
Registriert: 16. Januar 2009 11:38

Beitrag von blenderman »

Hallo ihr zwei,

kommt also der ftp close Befehl zu früh? Wenn ich den close befehl wegglasse stürzt das Programm trotzdem ab. Oder habe ich euch falsch verstanden und benötige weiteren Code unter commandFinished()? Ein leeres untiteld.txt über QFile funktioniert bei mir ohne commandFinished().

Das Pixmap ist nicht leer, es wird lokal erfolgreich gespeichert. Der Teil mit dem Buffer sollte auch stimmen. http://doc.trolltech.com/4.5/qpixmap.html#save

mfg,
Oli
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dein buffer wird schon gelöscht aber es sind noch nicht alle Daten hochgeladen worden. Du musst sicherstellen (wie auch die Doku sagt) dass der buffer so lange gültig ist bist QFtp fertig gemeldet hat.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
blenderman
Beiträge: 14
Registriert: 16. Januar 2009 11:38

Beitrag von blenderman »

Dachte das ist ein Forum, kein Chat. :D Spitzenmäßige Unterstützung. Dankeschön.
blenderman
Beiträge: 14
Registriert: 16. Januar 2009 11:38

Beitrag von blenderman »

Ich geb mich geschlagen. Wie stelle ich sicher das der Buffer während der Operation erhalten bleibt?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde einfach mal mit C++ und einer Klasse anfangen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Das funktioniert garantiert nicht, die QFtp ist eine gethreadete Klasse, so wie alle anderen Netzwerkklassen in Qt auch.
Schau dir doch mal die FTP Example an.

PS: würde eher QFile verwenden
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Strahlex hat geschrieben:Das funktioniert garantiert nicht, die QFtp ist eine gethreadete Klasse,[/url]
Was soll nicht funktionieren?
Strahlex hat geschrieben: PS: würde eher QFile verwenden
Wieso erst eine tempoäre Datei anlegen??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Strahlex
Beiträge: 158
Registriert: 23. Dezember 2008 15:49
Wohnort: Österreich

Beitrag von Strahlex »

Christian81 hat geschrieben: Wieso erst eine tempoäre Datei anlegen??
Wer sagt was von einer temporären Datei, da er ja sowieso eine png Uploaden will kann er das doch direkt machen und nicht umständlich über den Buffer.
Antworten