要使用QNetworkAccessManager
实现文件上传到FTP服务器,可以通过发送PUT请求并在请求体中包含文件数据。以下是一个示例代码:
QString filePath = "path/to/file.jpg";
QFile file(filePath);
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Failed to open file for reading: " << file.errorString();
return;
}
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
// 创建URL来指定FTP服务器上的目标路径
QUrl url("ftp://example.com/path/to/destination/file.jpg");
url.setUserName("username"); // 设置FTP用户名
url.setPassword("password"); // 设置FTP密码
// 发送PUT请求来上传文件
QNetworkRequest request(url);
request.setUploadProgressEnabled(true); // 启用上传进度报告
QNetworkReply *reply = manager->put(request, &file);
connect(reply, &QNetworkReply::finished, [=]() {
if (reply->error() == QNetworkReply::NoError) {
// 上传成功
qDebug() << "Upload successful";
} else {
// 发生错误
qDebug() << "Error occurred: " << reply->errorString();
}
reply->deleteLater(); // 清理网络回复对象
});
// 监听上传进度(可选)
connect(reply, &QNetworkReply::uploadProgress, [=](qint64 bytesSent, qint64 bytesTotal) {
int percent = static_cast<int>((bytesSent * 100) / bytesTotal);
qDebug() << "Uploading progress: " << percent << "%";
});
在上述示例中,我们创建一个QUrl
对象来指定FTP服务器上的目标路径,并设置用户名和密码。然后,我们发送PUT请求来上传文件,并通过QNetworkReply
对象处理响应。
请注意,在实际使用中,请将URL替换为您的FTP服务器的地址和目标路径,并根据需要进行错误处理和进度更新等操作。
内容由零声教学AI助手提供,问题来源于学员提问