1. ftp://ftp.denx.de/pub/u-boot/lowboot-1.0.0.patch.gz  下载文件

FtpGet.h

  1. #ifndef FTPGET_H
  2. #define FTPGET_H
  3.  
  4. #include <QUrl>
  5. #include <QFtp>
  6. #include <QFile>
  7.  
  8. class Ftpget : public QObject
  9. {
  10. Q_OBJECT
  11. public:
  12. Ftpget(QObject *parent=0);
  13. bool getFile(const QUrl &url);
  14.  
  15. signals:
  16. void done();
  17.  
  18. private slots:
  19. void ftpDone(bool error);
  20.  
  21. private:
  22. QFtp ftp;
  23. QFile file;
  24. };
  25.  
  26. #endif // FTPGET_H

FtpGet.cpp

  1. #include "FtpGet.h"
  2. #include <iostream>
  3. #include <QFileInfo>
  4.  
  5. Ftpget::Ftpget(QObject *parent)
  6. :QObject(parent)
  7. {
  8. connect(&ftp, SIGNAL(done(bool)), this, SLOT(ftpDone(bool)));
  9. }
  10.  
  11. bool Ftpget::getFile(const QUrl &url)
  12. {
  13. if( !url.isValid() )
  14. {
  15. std::cerr << "Error: Invaild URL" << std::endl;
  16. return false;
  17. }
  18. if( url.scheme() != "ftp" )
  19. {
  20. std::cerr << "Error: URL must start with 'ftp'" << std::endl;
  21. return false;
  22. }
  23. if( url.path().isEmpty() )
  24. {
  25. std::cerr << "Error: URL has no path " << std::endl;
  26. return false;
  27. }
  28.  
  29. QString localFileName = QFileInfo(url.path()).fileName();
  30. if( localFileName.isEmpty() )
  31. localFileName = "ftpget.out";
  32.  
  33. file.setFileName(localFileName);
  34. if( !file.open(QIODevice::WriteOnly) )
  35. {
  36. std::cerr << "Error: cannot write file"
  37. << qPrintable(file.fileName()) << ":"
  38. << qPrintable(file.errorString()) << std::endl;
  39. return false;
  40. }
  41.  
  42. ftp.connectToHost(url.host(), url.port(21));
  43. ftp.login();
  44. ftp.get(url.path(), &file);
  45. ftp.close();
  46. return true;
  47. }
  48.  
  49. void Ftpget::ftpDone(bool error)
  50. {
  51. if( error )
  52. std::cerr << "Error: " << qPrintable(ftp.errorString()) << std::endl;
  53. else
  54. std::cerr << "File downloaded as " << qPrintable(file.fileName()) << std::endl;
  55. file.close();
  56. emit done();
  57. }

main.cpp

  1. #include <QtGui/QApplication>
  2. #include <QCoreApplication>
  3. #include <QStringList>
  4. #include <iostream>
  5. #include "FtpGet.h"
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9. QCoreApplication a(argc, argv);
  10. QStringList args = QCoreApplication::arguments();
  11. if( args.count() != 2 )
  12. {
  13. std::cerr << "Ex: ftpget ftp://xxxxx" << std::endl;
  14. return 1;
  15. }
  16.  
  17. Ftpget getter;
  18. if( !getter.getFile(QUrl(args[1])) )
  19. return 1;
  20. QObject::connect(&getter, SIGNAL(done()), &a, SLOT(quit()));
  21.  
  22. return a.exec();
  23. }

QT QFtp使用实例 从FTP下载一个文件的更多相关文章

  1. C# 使用ftp下载一个文件夹下的所有文件,包括子目录文件夹

    这篇博客给大家补充一个方法,就是得到一个目录下的所有文件名称.在前端调用,大家写一个递归去遍历就可以了,我在这里就不在写了.具体ftp下载的方法在我的另一篇博客里有,需要的可以去看一下. /// &l ...

  2. C#多线程下载一个文件

    这里只是说明多线程下载的理论基础,嘿嘿,并没有写多线程下载的代码,标题党了,但是我相信,看完这个代码就应该能够多线程的方式去下载一个文件了. 多线程下载是需要服务器支持的,这里并没有判断服务器不支持的 ...

  3. ftp下载目录文件 不需要ftp脚本

    ftp下载目录文件 不需要ftp脚本 wget ftp://192.168.1.37:21/checkpoints --ftp-user=ftpadmin --ftp-password=gaofeng ...

  4. tcl/tk实例详解——返回一个文件夹下所有文件的绝对路径

    http://blog.csdn.net/dulixin/article/details/2133840 #所有代码如下,使用注释的方式讲解脚本#修改好文件夹和保存结果路径,可以把本文件直接拷贝进tc ...

  5. windows通过ftp下载linux文件

    # windows 下载 linux的文件>> ftp <domain_or_ip>>> <input_username>>> <in ...

  6. 从Internet下载一个文件

    使用的.net框架下的System.Net.WebClient类的DownloadFile()方法以图片为例:

  7. 【大话QT之十】实现FTP断点续传(需要设置ftp服务器为“PASV”被动接收方式)

    应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在客户端修改或新增加一个文件时,该文件要同步上传到服务器端对应的用户目录下,因此针对数据传输(即:上传.下载)这一块现在既定了三种传输方式,即: ...

  8. 【大话QT之十】实现FTP断点续传

    应用需求: 网盘开发工作逐步进入各部分的整合阶段,当用户在client改动或新添加一个文件时.该文件要同步上传到server端相应的用户文件夹下,因此针对传输数据(即:上传.下载)这一块如今既定了三种 ...

  9. springMVC下载FTP上的文件

    springMVC下载FTP上的文件 今天没时间写.先上传 一个工具类 工具类 package com.utils; import java.io.File; import java.io.FileO ...

随机推荐

  1. 【转】C#操作word定位光标

    十一.上下左右移动光标位 private void moveLeft() { object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdWor ...

  2. 超哥mysql数据库部分blog整理:

    总目录:mysql数据库阶段学习目录 https://www.cnblogs.com/clschao/articles/10065275.html Day1. 1.数据库初识 https://www. ...

  3. ThinkPHP官网瀑布流实现分享

    很多人都想做瀑布流的效果,这里告诉大家官网使用的方法. 首先要下载瀑布流的插件jquery.masonry.min.js 地址:http://masonry.desandro.com/index.ht ...

  4. 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页

    因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...

  5. webview自动循环播放

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  6. Mac 安装Minikube

    环境信息: guoguo-MacBook-Pro-3:~ guoguo$ docker versionClient: Version:    17.12.0-ce API version:    1. ...

  7. 【Nginx】HTTP请求的11个处理阶段

    Nginx将一个HTTP请求分成多个阶段.以模块为单位进行处理.这样做的优点是使处理过程更加灵活.减少耦合度.HTTP框架将处理分成了11个阶段,各个阶段能够包括随意多个HTTP模块并以流水线的方式处 ...

  8. 在html中插入音频

    在html中插入音频 第一种:在页面代码中的<head></head>之间加入<bgsound src="音乐url" loop="-1&q ...

  9. Ubuntu 16.04 php卸载

    1.卸载 apache2 sudo apt-get --purge remove apache2* sudo apt-get autoremove apache2 (--purge 是完全删除并且不保 ...

  10. The Maximum Unreachable Node Set 【17南宁区域赛】 【二分匹配】

    题目链接 https://nanti.jisuanke.com/t/19979 题意 给出n个点 m 条边 求选出最大的点数使得这个点集之间 任意两点不可达 题目中给的边是有向边 思路 这道题 实际上 ...