IOS开发网络篇之──ASIHTTPRequest下载示例

本文介绍如何使用ASIHTTPRequest实现支持断点续传的文件下载功能,包括创建网络请求队列、发送下载请求、暂停请求及ASIHTTPRequestDelegate回调方法。通过设置临时文件路径、下载路径和下载进度代理,实现文件下载过程中的断点续传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在工程中,我们会常常遇到需要下载的 程序 ,比如下载在线音乐、下载图片等等,今天我将介绍一下利用ASIHTTPRequest的下载示例,支持断点续传,利用ASIHTTPRequest下载以及断点续传的原理在我的博客:http://blog.youkuaiyun.com/pjk1129/article /details/6575588中有具体的介绍,今天重点介绍如何实现,废话少说,开始正文:

   一、创建网络请求队列

   首先,创建网络请求队列,如下:

   ASINetworkQueue  *que = [[ASINetworkQueue alloc] init];

  self.netWorkQueue = que;

  [que release];

   

  [self.netWorkQueue reset];

  [self.netWorkQueue setShowAccurateProgress:YES];

  [self.netWorkQueue go];

  二、创建存放路径

   //初始化Documents路径

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];

//初始化临时文件路径

NSString *folderPath = [path stringByAppendingPathComponent:@"temp"];

//创建文件管理器

NSFileManager *fileManager = [NSFileManager defaultManager];

//判断temp文件夹是否存在

BOOL fileExists = [fileManager fileExistsAtPath:folderPath];

 

if (!fileExists) {//如果不存在说创建,因为下载时,不会自动创建文件夹

[fileManager createDirectoryAtPath:folderPath 

        withIntermediateDirectories:YES 

                attributes:nil

                   error:nil];

}

          三、发送下载请求

     这里对下面几个对象说明一下:CustomCell是我自定义的cell,cell上面有下载和暂停两个按钮,其tag值为cell所在的行,因此这里的[sendertag]为下载按钮的tag值,self.downloadArray为array数组对象,存放要下载的资源字典信息,在该字典中有一键为URL,它对应的值就是我们下载链接。

  这些东西,根据自己的实际需要改动一下即可使用

   CustomCell *cell = (CustomCell *)[self.myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:[sender tag] inSection:0]];

  NSString *filePath = [[self.downloadArray objectAtIndex:[sender tag]] objectForKey:@"URL"];

  NSLog(@"filePath=%@",filePath);

  //初始下载路径

NSURL *url = [NSURL URLWithString:filePath];

//设置下载路径

ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:url];

//设置ASIHTTPRequest代理

request.delegate = self;

  //初始化保存ZIP文件路径

NSString *savePath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"book_%d.zip",[sender tag]]];

//初始化临时文件路径

NSString *tempPath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"temp/book_%d.zip.temp",[sender tag]]];

//设置文件保存路径

[request setDownloadDestinationPath:savePath];

//设置临时文件路径

[request setTemporaryFileDownloadPath:tempPath];

   

  //设置进度条的代理,

[request setDownloadProgressDelegate:cell];

//设置是是否支持断点下载

[request setAllowResumeForFileDownloads:YES];

//设置基本信息

[request setUserInfo:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:[sender tag]],@"bookID",nil]];

   

  NSLog(@"UserInfo=%@",request.userInfo);

//添加到ASINetworkQueue队列去下载

[self.netWorkQueue addOperation:request];

//收回request

[request release];

   三、暂停请求

   这里的cell下下载时的一样,

CustomCell *cell = (CustomCell *)[self.myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:[sender tag] inSection:0]];

   

  for (ASIHTTPRequest *request in [self.netWorkQueue operations]) {

    NSInteger bookid = [[request.userInfo objectForKey:@"bookID"] intValue];//查看userinfo信息

    if ([sender tag] == bookid) {//判断ID是否匹配

      //暂停匹配对象

       [request clearDelegatesAndCancel];

    }

  }


   四、ASIHTTPRequestDelegate回调方法

            上面已经把下载请求与暂停请求实现,点击下载时,开始下载资源;当点暂停时,下载中断;当我们再点击下载按钮时,继续下载,在第二步的

[request setAllowResumeForFileDownloads:YES]设置是是否支持断点下载。下面要实现ASIHTTPRequestDelegate代理方法如下:

 

#pragma mark -

#pragma mark ASIHTTPRequestDelegate method

//ASIHTTPRequestDelegate,下载之前获取信息的方法,主要获取下载内容的大小,可以显示下载进度多少字节

- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders {

NSLog(@"didReceiveResponseHeaders-%@",[responseHeaders valueForKey:@"Content-Length"]);


  NSLog(@"contentlength=%f",request.contentLength/1024.0/1024.0);

  int bookid = [[request.userInfo objectForKey:@"bookID"] intValue];

  NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

  float tempConLen = [[userDefaults objectForKey:[NSString stringWithFormat:@"book_%d_contentLength",bookid]] floatValue];

  NSLog(@"tempConLen=%f",tempConLen);

  //如果没有保存,则持久化他的内容大小

  if (tempConLen == 0 ) {//如果没有保存,则持久化他的内容大小

    [userDefaults setObject:[NSNumber numberWithFloat:request.contentLength/1024.0/1024.0] forKey:[NSString stringWithFormat:@"book_%d_contentLength",bookid]];

  }


}

//ASIHTTPRequestDelegate,下载完成时,执行的方法

- (void)requestFinished:(ASIHTTPRequest *)request {

   

  int bookid = [[request.userInfo objectForKey:@"bookID"] intValue];

  CustomCell *cell = (CustomCell *)[self.myTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:bookid inSection:0]];

  cell.downloadCompleteStatus = YES;

  cell.progressView.progress = 0.0; 

}


   经过上述步骤,一个支持断点续传的功能程序实现了!

原文:http://www.54xue.com/w/58/n-29458.html
内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值