Qt之FTP上传/下载文件操作

一个简单的Ftp客户端文件上传/下载操作示例。

上传文件

QNetworkAccessManager manager;
QUrl url;
/* 设置通讯协议 */
url.setScheme("ftp");    
/* 设置用户名 */  
url.setUserName("root");  
/* 设置密码 */ 
url.setPassword("123456"); 
/* 设置主机,也可以是域名 */
url.setHost("127.0.0.1");
/* 设置端口号,一般为21 */  
url.setPort(21);         
/* 设置路径 */ 
url.setPath("/tmp/hello.png"); 

/* 装载本地文件 */
QFile file("/Desktop/hello.png"); 
file.open(QIODevice::ReadOnly);
/* 读取本地文件数据 */
QByteArray data = file.readAll(); 
file.close();

QNetworkRequest request(url);
/* 上传数据,上传成功后会在远端创建/tmp/hello.png文件 */
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();
}

下载文件

QNetworkAccessManager manager;
QUrl url;
/* 设置通讯协议 */
url.setScheme("ftp");      
/* 设置用户名 */
url.setUserName("root");   
/* 设置密码 */
url.setPassword("123456"); 
/* 设置主机,也可以是域名 */
url.setHost("127.0.0.1");  
/* 设置端口号,一般为21 */
url.setPort(21);           
/* 设置路径 */
url.setPath("/tmp/test.txt"); 

QNetworkRequest request(url);
/* 执行Get请求 */
QNetworkReply* reply = manager.get(request); 

QEventLoop eventLoop;
QObject::connect(reply, SIGNAL(finished()), &eventLoop, SLOT(quit()));
/* 进入等待,但事件循环依然进行 */
eventLoop.exec(); 

if (reply->error() == QNetworkReply::NoError) {
    /* 创建本地文件 */
    QFile file("test.txt"); 
    file.open(QIODevice::WriteOnly);
    /* 写入文件 */
    file.write(reply->readAll()); 
    file.close();
}
else {
    qDebug() << "Error: " << reply->errorString();
}

总结

  • 上传文件:配置url->加载数据->put操作
  • 下载文件:配置url->get操作->获取数据保存到文件
  • 如服务端没有身份验证,客户端可以省略用户名和密码操作。

关注Qt君公众号获取更多知识。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页
实付 59.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值