下面是使用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_username
和 ftp_password
替换为你的FTP用户名和密码。另外,确保目标路径正确,并有相应的写入权限。
该代码通过QNetworkAccessManager发送PUT请求将本地文件上传到指定的FTP服务器上。上传过程中会显示上传进度信息。成功上传时输出 “File uploaded successfully!“,失败时输出错误信息。
这只是一个简单示例,请根据实际情况进行修改和完善。
内容由零声教学AI助手提供,问题来源于学员提问