我用一个QNAM来处理使用ftp协议上传。 整个过程的工作,但我有一个奇怪的现象:
这是我的方法:
void ftp::uploadFile(const QString &origin, const QString &destination)
{
QUrl url("ftp://"+host+""+destination);
url.setUserName(user);
url.setPassword(pwd);
url.setPort(21);
localFile = new QFile(origin, this);
if (localFile->open(QIODevice::ReadOnly))
{
reply = nam->put(QNetworkRequest(url), localFile);
QObject::connect(reply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(transferProgress(qint64, qint64)));
QObject::connect(reply, SIGNAL(finished()), this, SLOT(transferFinished()));
}
else qDebug() << localFile->errorString();
}
当我上传文件,上传进度的发出:
qDebug() << sent << "/" << total;
输出0 / X,直到X / X。 然后,它需要很长的时间,完成的信号被发射也许长达20秒之前。 为什么这种延迟?
我试着忽略成品信号和发射信号时, 自己的进步是在sent==total
,但该文件在另一端损坏。 (这不是真正的损坏,我只发送JPG格式,生成的文件是上半区唯一JPG,很大一部分就是灰色的。)
我想提供我的用户有一个进度条,其中100%的真正含义过程结束。 上传5秒,然后在100%保持20秒是不是真的很好。