1、在.pro文件加上
QT += network
2、实现
main.cpp
#include <QApplication>
#include <QFile>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
bool ftp_upload(QString loadFile,QString ftpServerFile);
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ftp_upload("./202008.mp4","/home/zheng/ftp/202008.mp4");
// return a.exec();
return 0;
}
/* 通过ftp上传文件
* loadFile: 本地文件位置
* ftpServerFile: 储存到ftp服务器的位置
*/
bool ftp_upload(QString loadFile,QString ftpServerFile)
{
QNetworkAccessManager manager;
QUrl url;
url.setScheme("ftp"); // 设置通讯协议
url.setHost("192.168.0.23"); // 设置ftp服务器地址
url.setPort(21); // 设置端口号
url.setUserName("test"); // 设置用户名
url.setPassword("abcdd"); // 设置密码
url.setPath(ftpServerFile); // ftp服务器路径
QFile file(loadFile); // 加载载本地文件
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll(); // 读取本地文件数据
file.close();
QNetworkRequest request(url);
QNetworkReply* reply = manager.put(request, data); // 上传数据
QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
//进入等待,但事件循环依然进行
eventLoop.exec();
if (reply->error() != QNetworkReply::NoError) {
qDebug() << "Error: " << reply->errorString();
return false;
}
return true;
}