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 ...
随机推荐
- timus1965(不错的贪心)
题意是:给你一个1-n的排列,要你把这个排列分成两个序列,且这个两个序列都满足单调性. 题解: 1.首先假设找出的两个序列都是单调递增的(都是单调递减的同理) 那么很容易可以想到,将新加入的数放入到某 ...
- Strange Optimization(扩展欧几里得)
Strange Optimization Accepted : 67 Submit : 289 Time Limit : 1000 MS Memory Limit : 65536 KB Str ...
- Linux安装mysql8.*
分别在Linux和windows上安装mysql8.* 环境 CentOS7 安装mysql8 步骤: window下的Navicat 连接MySql8: 第一部分 CentOS7安装mysql8 1 ...
- 在Tomcat配置JNDI数据源的三种方式
最近使用到了在tomcat下配置数据源的内容,在这里转载一篇文章记录下 转载自: http://blog.csdn.net/dyllove98/article/details/7706218 在我过去 ...
- 转:使用awk命令获取文本的某一行,某一列
1.打印文件的第一列(域) : awk '{print $1}' filename2.打印文件的前两列(域) : awk '{print ...
- MongoDB学习笔记—windows下安装
1.登录官网下载安装包 官网下载地址:https://www.mongodb.com/download-center?jmp=nav#community 根据你的系统下载 32 位或 64 位的 .m ...
- BDC程序步骤
(1)记录屏幕操作: (2)产生相关程序和数据格式文件: (3)调整数据文件: (4)运行BDC产生的程序读取文件导入数据: (5)源代码分析: (6)用BDC 导入单据: 在理解ABAP 开发的sc ...
- Python基础-生成器和迭代器
生成器都是迭代器,迭代器不一定是生成器 def fansik(max): n, before, after = 0, 0, 1 while n < max: print(before) befo ...
- Network Basic Knowledge
@1: 应用层的常用协议以及对应的端口号: DNS 53/tcp/udp SMTP 25/tcp POP3 110/tcp HTTP 80/tcp HTTPS 443/udp TELNET 23/tc ...
- offsetHeight+scrollHeight+clientHeight
ch 窗口可见区域高度 :ch = padding + height(height不是所有内容的高度,是样式定义的高度) oh border以内的内容高度: oh = border + padding ...