FTP使用QNetworkAccessManager写入文件

时间:2017-05-21 00:51:26

标签: c++ qt ftp

我在互联网上搜索并没有找到多少。这是我目前的代码:

QNetworkAccessManager* qnam = new QNetworkAccessManager(this);
QUrl url = QUrl("ftp://example.com/file.txt");
url.setHost(QString("ftp://example.com"));
url.setUserName(QString("user"));
url.setPassword(QString("pass"));
url.setPort(21);
QNetworkRequest req(url);
file.close();

从我现在的情况来看,如何写入" file.txt" ?

由于

1 个答案:

答案 0 :(得分:0)

据我所知(可能还有其他方式)

  • 您必须将文件从FTP下载到本地文件或流中。
  • 然后更新本地文件或流。
  • 将更新后的文件或流上传回FTP

使用本地文件提供示例。如果你愿意,可以尝试自己的流。代码是粗略的伪代码。当你将它用于生产时要小心。

首先为网络管理员的finished信号创建一个插槽,以完全读取该文件。

connect(qnam,SIGNAL(finished(QNetworkReply*)),
        this, SLOT(replyFinished(QNetworkReply*)));

获取网络回复,如下所示。

QNetworkReply *nReply = qnam->get(req);

创建一个插槽函数以将完整文件读取到本地。

void YourClass::replyFinished(QNetworkReply *data) {
    QFile file("YourFileName");
    if (!file.open(QIODevice::WriteOnly))
        return;
    file.write(data->readAll());
    file.close();
}

以编程方式修改本地文件。

现在将文件上传回FTP,如下所述。

QNetworkRequest upload(url); 
qnam->put(upload, "YourFileName");