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下载一个文件的更多相关文章

  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. 用javascript复制富文本

    由于项目需求,希望能够用javascript复制富文本格式的数据,例如全选一个网页Ctrl+C, Ctrl+V到一个word文档中,数据还是原来的格式,显示出来的样子也都和原来一样.现在希望使用jav ...

  2. Error: unable to connect to node rabbit@10: nodedown 修改hostname后异常

    https://blog.csdn.net/witsmakemen/article/details/22651365 [root@d bin]# rabbitmqctl start_appStarti ...

  3. python函数的学习笔记

    这篇文章是我关于学习python函数的一些总结 一.随着函数的引入,这里首先要说的就是全局变量和局部变量了. 什么是全局变量.什么是局部变量: 全局变量就是全局都能调用的变量,一般都在文件的开头,顶头 ...

  4. MySQL复制(一):复制的基本步骤

    从这里开始,对复制的内容开始做一些详细的描述,复制从简单到入门 复制最简单的模式如下 基本的三个简单步骤 1 配置一个服务器为master 2 配置一个服务器为slave 3 将slave连接到mas ...

  5. How To Surf The Internet In Right Ways

    本文偏指导性质,具体实现自行探索~~ 科普 如何***既然想学点东西,就不能被网络束缚住.国内的网络环境,对于外面世界探索还是挺限制的. 什么是墙GFW(great firewall) 中国特有的.就 ...

  6. jquery ajax属性async(同步异步)示例

    在jquery的ajax中如果我们希望实现同步或者异步我们可以直接设置async发生为真或假即可true false,下面举几个jquery ajax同步和异步实例 例1.jquery+ajax/&q ...

  7. Linux 路径与命令搜寻顺序

    以相对/绝对路径运行命令,例如『 /bin/ls 』或『 ./ls 』: 由 alias 找到该命令来运行: 由 bash 内建的 (builtin) 命令来运行: 透过 $PATH 这个变量的顺序搜 ...

  8. volume不能挂载mysql permission denied问题

    参考 把玩jenkins docker镜像遇到的volume权限问题 docker run -d -v /root/jenkins:/var/jenkins_home -u 0 -P --name j ...

  9. width

    position:absolute 其widht:%是想对于最近的已经定位的父元素,如果没有就想对于body widht 是指的内容区的with,设置除了width其他的元素都会使元素变的比width ...

  10. Archimate

    archimate语言提供了一种用于表示企业体系结构的图形化语言,包括策略,转换和迁移规划,以及架构的动机和基本原理.该标准的设计尽可能紧凑,但仍可用于大多数企业体系结构建模需求.下图显示了Archi ...