QT QFtp使用实例 从FTP下载一个文件
1. ftp://ftp.denx.de/pub/u-boot/lowboot-1.0.0.patch.gz 下载文件
FtpGet.h
- #ifndef FTPGET_H
- #define FTPGET_H
- #include <QUrl>
- #include <QFtp>
- #include <QFile>
- class Ftpget : public QObject
- {
- Q_OBJECT
- public:
- Ftpget(QObject *parent=0);
- bool getFile(const QUrl &url);
- signals:
- void done();
- private slots:
- void ftpDone(bool error);
- private:
- QFtp ftp;
- QFile file;
- };
- #endif // FTPGET_H
FtpGet.cpp
- #include "FtpGet.h"
- #include <iostream>
- #include <QFileInfo>
- Ftpget::Ftpget(QObject *parent)
- :QObject(parent)
- {
- connect(&ftp, SIGNAL(done(bool)), this, SLOT(ftpDone(bool)));
- }
- bool Ftpget::getFile(const QUrl &url)
- {
- if( !url.isValid() )
- {
- std::cerr << "Error: Invaild URL" << std::endl;
- return false;
- }
- if( url.scheme() != "ftp" )
- {
- std::cerr << "Error: URL must start with 'ftp'" << std::endl;
- return false;
- }
- if( url.path().isEmpty() )
- {
- std::cerr << "Error: URL has no path " << std::endl;
- return false;
- }
- QString localFileName = QFileInfo(url.path()).fileName();
- if( localFileName.isEmpty() )
- localFileName = "ftpget.out";
- file.setFileName(localFileName);
- if( !file.open(QIODevice::WriteOnly) )
- {
- std::cerr << "Error: cannot write file"
- << qPrintable(file.fileName()) << ":"
- << qPrintable(file.errorString()) << std::endl;
- return false;
- }
- ftp.connectToHost(url.host(), url.port(21));
- ftp.login();
- ftp.get(url.path(), &file);
- ftp.close();
- return true;
- }
- void Ftpget::ftpDone(bool error)
- {
- if( error )
- std::cerr << "Error: " << qPrintable(ftp.errorString()) << std::endl;
- else
- std::cerr << "File downloaded as " << qPrintable(file.fileName()) << std::endl;
- file.close();
- emit done();
- }
main.cpp
- #include <QtGui/QApplication>
- #include <QCoreApplication>
- #include <QStringList>
- #include <iostream>
- #include "FtpGet.h"
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- QStringList args = QCoreApplication::arguments();
- if( args.count() != 2 )
- {
- std::cerr << "Ex: ftpget ftp://xxxxx" << std::endl;
- return 1;
- }
- Ftpget getter;
- if( !getter.getFile(QUrl(args[1])) )
- return 1;
- QObject::connect(&getter, SIGNAL(done()), &a, SLOT(quit()));
- return a.exec();
- }
QT QFtp使用实例 从FTP下载一个文件的更多相关文章
- C# 使用ftp下载一个文件夹下的所有文件,包括子目录文件夹
这篇博客给大家补充一个方法,就是得到一个目录下的所有文件名称.在前端调用,大家写一个递归去遍历就可以了,我在这里就不在写了.具体ftp下载的方法在我的另一篇博客里有,需要的可以去看一下. /// &l ...
- C#多线程下载一个文件
这里只是说明多线程下载的理论基础,嘿嘿,并没有写多线程下载的代码,标题党了,但是我相信,看完这个代码就应该能够多线程的方式去下载一个文件了. 多线程下载是需要服务器支持的,这里并没有判断服务器不支持的 ...
- ftp下载目录文件 不需要ftp脚本
ftp下载目录文件 不需要ftp脚本 wget ftp://192.168.1.37:21/checkpoints --ftp-user=ftpadmin --ftp-password=gaofeng ...
- tcl/tk实例详解——返回一个文件夹下所有文件的绝对路径
http://blog.csdn.net/dulixin/article/details/2133840 #所有代码如下,使用注释的方式讲解脚本#修改好文件夹和保存结果路径,可以把本文件直接拷贝进tc ...
- windows通过ftp下载linux文件
# windows 下载 linux的文件>> ftp <domain_or_ip>>> <input_username>>> <in ...
- 从Internet下载一个文件
使用的.net框架下的System.Net.WebClient类的DownloadFile()方法以图片为例:
- 【大话QT之十】实现FTP断点续传(需要设置ftp服务器为“PASV”被动接收方式)
应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在客户端修改或新增加一个文件时,该文件要同步上传到服务器端对应的用户目录下,因此针对数据传输(即:上传.下载)这一块现在既定了三种传输方式,即: ...
- 【大话QT之十】实现FTP断点续传
应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在client改动或新添加一个文件时.该文件要同步上传到server端相应的用户文件夹下,因此针对传输数据(即:上传.下载)这一块如今既定了三种 ...
- springMVC下载FTP上的文件
springMVC下载FTP上的文件 今天没时间写.先上传 一个工具类 工具类 package com.utils; import java.io.File; import java.io.FileO ...
随机推荐
- 【转】C#操作word定位光标
十一.上下左右移动光标位 private void moveLeft() { object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdWor ...
- 超哥mysql数据库部分blog整理:
总目录:mysql数据库阶段学习目录 https://www.cnblogs.com/clschao/articles/10065275.html Day1. 1.数据库初识 https://www. ...
- ThinkPHP官网瀑布流实现分享
很多人都想做瀑布流的效果,这里告诉大家官网使用的方法. 首先要下载瀑布流的插件jquery.masonry.min.js 地址:http://masonry.desandro.com/index.ht ...
- 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页
因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...
- webview自动循环播放
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...
- Mac 安装Minikube
环境信息: guoguo-MacBook-Pro-3:~ guoguo$ docker versionClient: Version: 17.12.0-ce API version: 1. ...
- 【Nginx】HTTP请求的11个处理阶段
Nginx将一个HTTP请求分成多个阶段.以模块为单位进行处理.这样做的优点是使处理过程更加灵活.减少耦合度.HTTP框架将处理分成了11个阶段,各个阶段能够包括随意多个HTTP模块并以流水线的方式处 ...
- 在html中插入音频
在html中插入音频 第一种:在页面代码中的<head></head>之间加入<bgsound src="音乐url" loop="-1&q ...
- Ubuntu 16.04 php卸载
1.卸载 apache2 sudo apt-get --purge remove apache2* sudo apt-get autoremove apache2 (--purge 是完全删除并且不保 ...
- The Maximum Unreachable Node Set 【17南宁区域赛】 【二分匹配】
题目链接 https://nanti.jisuanke.com/t/19979 题意 给出n个点 m 条边 求选出最大的点数使得这个点集之间 任意两点不可达 题目中给的边是有向边 思路 这道题 实际上 ...