QNetworkAccessManager 的文件上传错误
Posted
技术标签:
【中文标题】QNetworkAccessManager 的文件上传错误【英文标题】:File Upload Error With QNetworkAccessManager 【发布时间】:2013-06-01 21:19:13 【问题描述】:我正在尝试在 CentOS 6.4 上使用 Qt 5.0 中的 QNetworkAccessManager 将文件上传到服务器。
我已经尝试在网上遵循一些示例,但它们都不起作用。 QFTP 工作得很好,但速度很慢,现在已弃用。我的上传代码是:
void ftp::start(QString fileLocation)
QUrl url2("ftp://example.com");
url2.setUserName(ftpusername);
url2.setPassword(ftppassword);
data = new QFile(fileLocation, this);
if (data->open(QIODevice::ReadOnly))
nam = new QNetworkAccessManager();
reply = nam->put(QNetworkRequest(url2), data);
connect(nam, SIGNAL(finished(QNetworkReply*)),this, SLOT(requestFinished(QNetworkReply*)));
connect(reply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(uploadProgress2(qint64, qint64)));
connect(reply, SIGNAL(finished()), SLOT(uploadDone()));
else
qDebug() << "Could not open file to FTP";
void ftp::uploadProgress2(qint64 done, qint64 total)
double percent;
if(done > 0 && total > 0)
percent = (done*100)/total;
myParent->addLog("Completed: " + QString::number(done) + "/" + QString::number(total) + " " + QString::number(percent) + "%");
void ftp::uploadDone()
qDebug() << "Error Code: " << reply->error();
data->deleteLater();
reply->deleteLater();
void ftp::requestFinished(QNetworkReply* r)
qDebug() << "Finished ";
qDebug()<< r->errorString();
这是我的程序的输出:
Completed: 0/0 0%
Finished
"Cannot open ftp://username:password@example.com/: is a directory"
Error code: 202
看文档,202的意思是:
QNetworkReply::ContentOperationNotPermittedError The operation requested on the remote content is not permitted
有什么建议吗?
【问题讨论】:
【参考方案1】:变化:
QUrl url2("ftp://example.com");
到
QUrl url2("ftp://example.com/somefile");
需要指出文件的链接。
【讨论】:
以上是关于QNetworkAccessManager 的文件上传错误的主要内容,如果未能解决你的问题,请参考以下文章
QT 使用 QNetworkAccessManager 下载文件
错误:没有用于调用“QNetworkAccessManager::QNetworkAccessManager(Networking* const)”的匹配函数
使用 QNetworkAccessManager 通过 HTTPS 下载文件:如何进行身份验证?
如何使用 QNetworkAccessManager 作为 QT DLL 函数下载文件?