头文件定义:
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;
}