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 ...
随机推荐
- CodeIgniter框架——知识要点汇总
NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五. ...
- 关于string的replace方法
今天写代码遇见一个小问题,就是当string a,b,c,d当腰删除b的时候如果replace(“a”,"");会造成,b,c,d 所以得replace("a&qu ...
- jQuery实现局部刷新页面数据绑定
今天遇到了一个问题:怎么样才能做到只刷新页面中的Repeater控件中的数据,在不用UploadPannel的情况下? 试了好多方法,无意间在看jquery文件时发现,使用load()方法即可解决此问 ...
- Solr 查询时候关键期 编码问题
背景架构: 中间是dubbo 调用, 其实还是编码问题!没啥大问题!记录下
- jquery 操作动态添加的元素
动态添加的元素,无法侦听到事件,写法如下: 使用函数.on 格式为: $(父元素).on('event','selector',function(){ //do something }) 例如 < ...
- webpack安装和简单配置
1.webpack是一个基于node的项目,所以先装好node和npm 参考我的随笔:https://www.cnblogs.com/jtnote/p/6230384.html 2.先创建 ...
- 关于python代码是编译执行还是解释执行
Python 是编译型语言还是解释型语言?回答这个问题前,应该先弄清楚什么是编译型语言,什么是解释型语言. 所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下 ...
- win7安装composer
安装前请务必确保已经正确安装了 PHP.打开命令行窗口并执行 php -v 查看是否正确输出版本号. 开始安装前需要把open_ssl扩展打开 打开命令行并依次执行下列命令安装最新版本的 Compos ...
- Oracle ErrorStack 使用和阅读具体解释
一.概述 在Oracle数据库执行过程中,我们常常会遇到这样或那样的错误.可是错误的提示并不详细,加大了我们在诊断问题时的难度. ErrorStack是Oracle提供的一种对于错误堆栈进行跟踪的方法 ...
- if控制器+循环控制器+计数器,控制接口分支
但是我不想这么做,接口只想写一次,让循环控制器和if控制器去判断接口,执行我想要的分支.这里遇到了一个问题,if控制器通过什么去判断接下来的分支?我引入了一个计数器的概念.起始值为0,每次循环加1,将 ...