ZBLOG

Qt 使用QNetworkAccessManager实现文件上传到FTP并创建该文件

下面是使用Qt的QNetworkAccessManager类实现文件上传到FTP服务器并在目标路径创建该文件的示例代码:

#include <QCoreApplication>
#include <QFile>
#include <QUrl>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // FTP服务器信息
    QString ftpUrl = "ftp://example.com/";
    QString username = "ftp_username";
    QString password = "ftp_password";

    // 本地待上传的文件路径
    QString localFilePath = "path/to/local/file.txt";

    // 获取本地文件名和远程目标路径
    QFileInfo fileInfo(localFilePath);
    QString fileName = fileInfo.fileName();
    QString remotePath = "/remote/path/" + fileName;

    // 打开本地文件
    QFile file(localFilePath);
    if (!file.open(QIODevice::ReadOnly))
        return -1;

    // 创建网络访问管理器对象和请求对象
    QNetworkAccessManager manager;
    
    QUrl url(ftpUrl + remotePath);
    
     // 设置用户名和密码凭据
   url.setUserName(username);
   url.setPassword(password);
   
   QNetworkRequest request(url);
  
   

    

  QObject::connect(&manager, &QNetworkAccessManager::finished,
                   [&](QNetworkReply *reply) {
                       if (reply->error() == QNetworkReply::NoError) {
                           qDebug() << "File uploaded successfully!";
                       } else {
                           qDebug() << "Upload failed:" << reply->errorString();
                       }
                       
                       reply->deleteLater();
                   });

   auto reply = manager.put(request, &file); 
   

  QObject::connect(reply, &QNetworkReply::uploadProgress,
                   [&](qint64 bytesSent, qint64 bytesTotal) {
                       qDebug() << "Upload progress:" << bytesSent << "/" << bytesTotal;
                   });

    return a.exec();
}

请注意,你需要将 ftp://example.com/ 替换为你的FTP服务器地址,以及 ftp_usernameftp_password 替换为你的FTP用户名和密码。另外,确保目标路径正确,并有相应的写入权限。

该代码通过QNetworkAccessManager发送PUT请求将本地文件上传到指定的FTP服务器上。上传过程中会显示上传进度信息。成功上传时输出 “File uploaded successfully!“,失败时输出错误信息。

这只是一个简单示例,请根据实际情况进行修改和完善。


内容由零声教学AI助手提供,问题来源于学员提问

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?