QT开发中文网

qt获取ftp服务器某个文件夹下的文件列表

可以使用Qt的QNetworkAccessManager和QNetworkReply类来实现获取FTP服务器某个文件夹下的文件列表。

示例代码:

QStringList getFileListFromFtp(QString host, QString user, QString password, QString path)
{
    QStringList fileList;

    // 创建一个QUrl对象,指定要连接的FTP服务器地址、用户名和密码
    QUrl url;
    url.setScheme("ftp");
    url.setHost(host);
    url.setUserName(user);
    url.setPassword(password);

    // 指定要获取文件列表的路径
    if (!path.isEmpty())
        url.setPath(path);

    // 创建一个QNetworkRequest对象,设置URL并指定FTP协议
    QNetworkRequest request(url);
    request.setAttribute(QNetworkRequest::ProtocolAttribute, QVariant("ftp"));

    // 使用QNetworkAccessManager发送GET命令请求获取文件列表
    QNetworkAccessManager manager;
    QNetworkReply *reply = manager.get(request);

    // 等待回复完成,即数据接收完毕
    while (!reply->isFinished())
        qApp->processEvents();

   // 从回复中解析出文件列表
   if (reply->error() == QNetworkReply::NoError) {
       QByteArray data = reply->readAll();
       QStringList lines = QString(data).split("\n");
       for (int i = 0; i < lines.size(); i++) {
           QString line = lines.at(i).trimmed();
           if (line.endsWith("."))
               continue; // 过滤掉当前目录和上级目录项

           QStringList parts = line.split(" ");
           if (parts.size() > 8) {
               fileList.append(parts.last());
           }
       }
   }

   // 回收资源
   reply->deleteLater();

   return fileList;
}

调用方法:

QStringList fileList = getFileListFromFtp("ftp.example.com", "user", "password", "/path/to/folder");
qDebug() << fileList;

注意:需要在.pro文件中添加QT += network才能使用QNetworkAccessManager类。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=2601

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?