ZBLOG

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

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

  1. #include <QCoreApplication>
  2. #include <QFile>
  3. #include <QUrl>
  4. #include <QNetworkAccessManager>
  5. #include <QNetworkRequest>
  6. #include <QNetworkReply>
  7. int main(int argc, char *argv[])
  8. {
  9. QCoreApplication a(argc, argv);
  10. // FTP服务器信息
  11. QString ftpUrl = "ftp://example.com/";
  12. QString username = "ftp_username";
  13. QString password = "ftp_password";
  14. // 本地待上传的文件路径
  15. QString localFilePath = "path/to/local/file.txt";
  16. // 获取本地文件名和远程目标路径
  17. QFileInfo fileInfo(localFilePath);
  18. QString fileName = fileInfo.fileName();
  19. QString remotePath = "/remote/path/" + fileName;
  20. // 打开本地文件
  21. QFile file(localFilePath);
  22. if (!file.open(QIODevice::ReadOnly))
  23. return -1;
  24. // 创建网络访问管理器对象和请求对象
  25. QNetworkAccessManager manager;
  26. QUrl url(ftpUrl + remotePath);
  27. // 设置用户名和密码凭据
  28. url.setUserName(username);
  29. url.setPassword(password);
  30. QNetworkRequest request(url);
  31. QObject::connect(&manager, &QNetworkAccessManager::finished,
  32. [&](QNetworkReply *reply) {
  33. if (reply->error() == QNetworkReply::NoError) {
  34. qDebug() << "File uploaded successfully!";
  35. } else {
  36. qDebug() << "Upload failed:" << reply->errorString();
  37. }
  38. reply->deleteLater();
  39. });
  40. auto reply = manager.put(request, &file);
  41. QObject::connect(reply, &QNetworkReply::uploadProgress,
  42. [&](qint64 bytesSent, qint64 bytesTotal) {
  43. qDebug() << "Upload progress:" << bytesSent << "/" << bytesTotal;
  44. });
  45. return a.exec();
  46. }

请注意,你需要将 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

注册

已经有帐号?