Seite 1 von 1

qftp ... put mit qbytearray*FIXED*

Verfasst: 31. August 2009 16:54
von fred4711
hallo,
ne kleine aber feine Frage :-)
ich versuche eine zip Datei in ein Qbytearray einzulesen und diese dann mittels qftp->put auf einen FTP Server raufzuladen.
Hier die nötigen Code Schnipsel :-)
QString _comfile = "upload.zip"
...
QFtp *m_Ftp = new QFtp(this);
m_Ftp->connectToHost(host);
m_Ftp->login(user,passws);
m_Ftp->cd("Info");
m_Ftp->cd("upload");

QFile file(_comfile);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QByteArray buff = file.readAll();
int return = m_Ftp->put(buff, _comfile);
m_Ftp->put(buff,_comfile);

Das Problem was ich habe ist, das die Datei auf dem Server nachher kleiner ist als meine lokale. und ich die auch nicht wirklich öffnen kann. ( wenn ich diese wieder runter geladen habe.

Ich weiß nicht an welcher Stelle ich nach dem Fehler suchen soll.
Kann es sein das ich beim QBytearray noch was besonderes angeben muss ? Bin für jede Hilfe Dankbar.

Verfasst: 31. August 2009 17:02
von Markus
Was liefern denn die Signals "commandFinished" und "done"? Ist der Parameter "error" true oder false?

Verfasst: 31. August 2009 17:09
von fred4711
der liefert done und keine Error !
was mich wundert habe mir die Size von buff ausgeben lassen, die ist bereits kleiner als meine eigentliche Datei ...
also FTP scheint seine sachen ganz ordentlich zu machen ! nur das Qbytearray ist schon kleiner als meine Datei. und genau so groß wie die Datei die am schluss auf dem Server liegt !
:-( Hat jemand ne Idee ?

Verfasst: 31. August 2009 17:13
von Markus
Hast Du mal versucht eine andere Datei zu nehmen oder das QByteArray in einer andere Datei zu schreiben? Nur um sicher zu gehen, dass das mit dem File-Handling alles klappt oder ob es an der Datei liegt?

Verfasst: 31. August 2009 18:04
von upsala
Was sind denn die Unterschiede zwischen den beiden Dateien?

Verfasst: 31. August 2009 21:52
von fred4711
so habe nun mal eine Datei mittels Tar erzeugt und diese in ein Qbytearray eingeladen und erneut auf die Platte geschrieben ...
Allerdings mit dem gleichen Ergebnis. das Testweise geschriebene File ist in der Größe nicht das gleiche und öffnen kann ich datei nicht wirklich.
Ich weiß an der Stelle nicht weiter. hier habe ich mal 2 Dateien

Hier mal mein Quick und Dirty Hack :-)

QFile file(_comfile);
QFile filesave("testfile.tar.gz");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
if (!filesave.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QByteArray buff = file.readAll();
file.close();
filesave.write(buff);
filesave.close();

Verfasst: 31. August 2009 22:07
von fred4711
Hallo,
habe es selbst gefunden
das
QIODevice::Text
musste bei der Funktion fürs einlesen und abspeichern weg :-)