FTP 使用 QNetworkAccessManager 写入文件

FTP Write to file with QNetworkAccessManager

本文关键字:文件 QNetworkAccessManager 使用 FTP      更新时间:2023-10-16

我在互联网上搜索了所有内容,没有找到太多。这是我当前的代码:

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();

从我现在所拥有的,我如何写入"文件.txt"?

谢谢

我所知(可能还有其他方法(

  • 您必须将文件从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");