Witam,
mam 'dziwny' problem, ponieważ nie wiem dlaczego pomimo poprawnego przesłania pliku na serwer wyświetlany mam komunikat QIODevice::read: device not open
. Ogólnie komunikat w założeniu dotyczy operacji na pliku (w tym przypadku jego czytania), ale nie wiem co tutaj jest dokładnie problemem..
Działam na Qt 5.3, więc stara biblioteka QFTP tutaj nie obowiązuje..
Problem występuje w momencie gdy 'obecna' jest ta linijka kodu:reply = nam.put(QNetworkRequest(url), putData);
odpowiedzialna za wysyłkę danych na serwer :P
Kod :
#include "uploader.h"
Uploader::Uploader(QObject *parent) :
QObject(parent)
{
}
void Uploader::start(const QString &fileName) {
QUrl url("ftp://adresIP/test/song.mp3");
url.setUserName("[email protected]");
url.setPassword("passwd");
file = new QFile(fileName);
QByteArray putData;
file->open(QIODevice::ReadOnly);
putData.append(file->readAll());
//-- różne eksperymenty..
file->flush();
file->close();
delete file;
//--
reply = nam.put(QNetworkRequest(url), putData);
connect(reply, SIGNAL(uploadProgress(qint64, qint64)), this, SLOT(uploadProgress(qint64, qint64)));
connect(reply, SIGNAL(finished()), this, SLOT(uploadDone()));
}
void Uploader::uploadProgress(qint64 bytesSent, qint64 bytesTotal) {
qDebug() << "Uploaded" << bytesSent << "of" << bytesTotal;
}
void Uploader::uploadDone() {
qDebug() << "Finished" << reply->error();
reply->deleteLater();
}
//uploader.h
QNetworkAccessManager nam;
QFile *file;
QNetworkReply *reply;
//main.cpp
Uploader u;
u.start("F:\\song.mp3");
Screen problemu w załączniku.