Bootstrap

Qt下载文件

头文件定义:

QFile *avatorFile;//文件指针
QNetworkReply *avatorReply;
QNetworkAccessManager *avatorManager;
void httpDowload();
void httpDowloadFinished();
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
//下载文件之前先在本地创建一个文件 
QDir file;//文件夹
QString fileStr=QString("text/%1/").arg(text);
QString fileName=fileStr+"text.jpg";
//判断文件夹是否存在 不存在创建
if(!file.exists(fileStr)){
   file.mkpath(fileStr);
}
avatorFile=new QFile(fileName);
//判断文件是否可写入 不可写删除 指针赋值0
if(!avatorFile->open(QIODevice::WriteOnly)){
   delete avatorFile;
   avatorFile=0;
   return;
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
//开始请求 下载文件
QUrl  serviceUrl = QUrl("http://www.baidu.com");
avatorManager = new QNetworkAccessManager(this);                                
//get方式请求 如需加密用post
avatorReply=avatorManager->get(QNetworkRequest(serviceUrl));
            connect(avatorReply,SIGNAL(readyRead()),this,SLOT(httpDowload()));//数据写入
    connect(avatorReply,SIGNAL(finished()),this,SLOT(httpDowloadFinished()));//请求完成
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
//将下载的文件数据写入到文件指针中
void HttpProvider::httpDowload(){
    if(avatorFile){
         avatorFile->write(avatorReply->readAll());
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//请求完成 文件下载成功 
void HttpProvider::httpDowloadClientFinished(){
    //刷新文件
    avatorFile->flush();
    avatorFile->close();
    avatorFile=0;
}
;