`
jsntghf
  • 浏览: 2527756 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

文件异步下载

    博客分类:
  • iOS
阅读更多

主要是用到了IMIDownloader,用起来很简单,核心代码请参考附件。

 

- (void)onDownloaderReceivedData:(IMIDownloader *)aDownloader {
	NSLog(@"%@\t\tProgress:%.2f%%", aDownloader.uuid, aDownloader.progress * 100.0);
	UIProgressView *p = (UIProgressView *)[window viewWithTag:[aDownloader.uuid intValue]];
	p.progress = aDownloader.progress;
}

- (void)onFinishDownload:(IMIDownloader *)aDownloader {
	NSLog(@"%@\t\tFinish:%@", aDownloader.uuid, aDownloader.name);
}

- (void)testDownloader {
	IMIDownloadManager *dm = [IMIDownloadManager shared];
	dm.delegate = (id<IMIDownloaderDelegate>)self;
	if (![dm resume]) {
		IMIDownloader *dl = [IMIDownloader new];
		//memory size (KB) of the downloading cache, default value is 100KB
		dl.memoryCacheSize = 80;
		//uuid can be any string, but here I use an int to give tag for UIProgressView
		//that can easy trac back to update the progress
		dl.uuid = @"102";
		//give me a name, or I will guess my name
		dl.name = @"pic1.jpg";
		//customize the file, leave it blank, I can give a path
		//dl.path = @"/CUSTOMIZE/YOUR/FILE/PATH";
		dl.targetURL = @"http://dl.iteye.com/upload/attachment/0076/4387/271f6001-aaf2-3231-878a-8d74377fd17d.jpg";
		[dm addDownloader:[dl autorelease]];	//downloader will start by itself
        
		IMIDownloader *dl2 = [IMIDownloader new];
		dl2.uuid = @"4322";
		dl2.name = @"pic2.jpg";
		dl2.targetURL = @"http://dl.iteye.com/upload/attachment/0071/4676/4e0c9ec4-7485-3052-8a6b-b71520ad0838.jpg";
		[dm addDownloader:[dl2 autorelease]];
	} else {
		NSLog(@"Resume Downloading!");
	}
	
	NSArray *keys = [dm.downloaders allKeys];
	for (int i = 0; i < [keys count]; i++) {
		UIProgressView *p = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 50 * (i + 1), 320, 20)];
		p.tag = [[keys objectAtIndex:i] intValue];
		p.progressViewStyle = UIProgressViewStyleBar;
		[window addSubview:p];
		[p autorelease];
	}
	
	UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
	btn.frame = CGRectMake(20, 350, 100, 40);
	[btn setTitle:@"Resume" forState:UIControlStateNormal];
	[btn addTarget:dm action:@selector(resume) forControlEvents:UIControlEventTouchUpInside];
	[window addSubview:btn];
	
	btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
	btn.frame = CGRectMake(180, 350, 100, 40);
	[btn setTitle:@"Stop" forState:UIControlStateNormal];
	[btn addTarget:dm action:@selector(stop) forControlEvents:UIControlEventTouchUpInside];
	[window addSubview:btn];
}
分享到:
评论

相关推荐

    批量异步下载

    在提供的压缩包文件"异步下载"中,可能包含了实现批量异步下载的相关代码示例、库文件或者文档。这些资源可以帮助开发者更好地理解和实现批量异步下载功能,从而优化他们的应用程序。 总的来说,批量异步下载是现代...

    JQuery异步上传下载

    本文将详细讲解如何利用jQuery实现无刷新的异步上传和下载文件,以及MyEclipse环境中项目的创建与部署。 首先,我们要了解jQuery异步上传的基本原理。在传统的文件上传方式中,用户提交表单时会刷新整个页面,用户...

    Springboot启用async异步调用

    这在处理耗时操作时尤其有用,如大数据计算、发送电子邮件或文件上传等。下面将详细阐述如何在Spring Boot中启用并使用异步调用。 首先,为了启用异步处理,我们需要添加`@EnableAsync`注解到配置类上。这个注解...

    Excel vba使用XMLHTTP进行异步下载的演示

    以下是一个简单的VBA示例代码,演示了如何使用XMLHTTP异步下载一个8M的mp3文件: ```vba Sub AsyncDownload() Dim xhr As Object Set xhr = CreateObject("MSXML2.XMLHTTP") ' 设置事件处理程序 AddHandler ...

    JavaScript 用fetch 实现异步下载文件功能

    本文将详细解析如何使用JavaScript中的fetch API来实现文件的异步下载功能。首先,我们会介绍fetch API的基本用法,然后通过一个具体的实例代码来演示如何结合HTML和JavaScript来完成这一任务。 fetch API是现代...

    异步下载并显示的三种方法

    本教程将详细讲解三种常用的异步下载并显示的方法:Handler、Thread机制、以及AsyncTask。这些方法都是为了解决Android应用中的UI更新与后台任务同步的问题。 首先,我们来看**Handler机制**。Handler主要用于解决...

    异步下载并解压zip文件

    本文将详细介绍如何实现一个实用的异步下载并解压ZIP文件的Demo。 首先,我们需要理解异步编程的概念。在Android中,有两种主要的异步处理方式:AsyncTask和IntentService。AsyncTask适合执行轻量级的异步任务,而...

    unity通过协程实现异步下载数据并加载

    在游戏开发中,数据的异步下载和加载是至关重要的,特别是对于大型游戏,因为它们通常需要大量的资源,如纹理、音频、模型和场景数据。为了不阻塞游戏主循环,Unity3D引入了协程(Coroutine)的概念,允许开发者以非...

    C# 多线程异步下载

    在上述代码中,`DownloadFileAsync`是异步下载文件的方法,`MultiThreadedDownload`则负责启动多线程下载。`activeDownloads`集合用于跟踪当前正在运行的任务,确保并发下载的数量不超过预设值。 此外,为了优化多...

    Visual C++源代码 101 如何从Web客户端异步下载文件

    Visual C++源代码 101 如何从Web客户端异步下载文件Visual C++源代码 101 如何从Web客户端异步下载文件Visual C++源代码 101 如何从Web客户端异步下载文件Visual C++源代码 101 如何从Web客户端异步下载文件Visual ...

    c# FTP操作类上传、异步上传文件、下载

    2. **文件下载**:同样支持同步和异步两种模式。 3. **创建目录**:在FTP服务器上创建新的目录。 4. **列出目录信息**:获取当前目录下的文件列表及其相关信息。 #### 使用的关键技术 为了实现上述功能,本文将...

    Python-异步协程下载器

    结合以上概念,我们可以构建一个异步下载器,它会创建多个协程并行下载多个文件。首先,我们需要一个函数来处理单个文件的下载,然后在一个大的事件循环中并行调用这些函数。 ```python async def download_single_...

    java文件异步上传

    Java文件异步上传是一种在Web应用中常见的技术,它允许用户在不阻塞浏览器界面的情况下上传文件。这种技术尤其在处理大文件或者批量上传时,能够显著提升用户体验,因为它们不会冻结页面,允许用户继续与应用程序...

    unity http 异步下载

    在开发过程中,有时我们需要从网络上获取资源,例如游戏更新、数据下载等,这时就需要用到HTTP异步下载功能。Unity提供了C#编程接口,让我们能够方便地实现这个功能。 在Unity中,通常我们会使用UnityWebRequest...

    异步下载图片返回Bitmap和路径

    总结,异步下载图片返回Bitmap和路径是Android开发中的重要技术,涉及到多线程、网络请求、文件操作等多个方面。通过合理的设计和使用合适的工具,可以实现高效、稳定的图片加载功能,提升应用的用户体验。

    文件同步与异步读写

    文件同步与异步读写是计算机编程中两个关键的概念,主要涉及到I/O操作,尤其是在处理大量数据时。本文将深入探讨这两个概念,并结合提供的VC6.0和VS2005下的实例进行分析。 首先,让我们理解同步和异步读写的基本...

    VB 简单的异步文件下载模块一例.rar

    一个简单的VB异步文件下载模块,调用Internet系列函数进行下载……最初在山寨M$DN里面应用,那时只是部分异步,现在完全异步。缺点是改变缓冲区大小时还要VB回调,所以只能SendMessage,所以开启异步的时候要设置一...

    c#异步多线程http文件分块断点续传下载工具

    3. **异步下载**:每个任务中,使用`WebClient`或`HttpClient`发起HTTP请求,请求特定的文件块。这里需要设置请求头,如`Range`字段,指示服务器只返回指定范围的数据。 4. **断点续传**:在发送请求之前,检查本地...

    异步类下载 带进度条

    异步下载还涉及到错误处理,包括网络中断、文件写入失败等。良好的错误处理机制可以确保在出现问题时能够恢复或者优雅地通知用户。 8. **性能优化**: 为了提高下载速度和用户体验,可以考虑使用多线程下载、断点...

Global site tag (gtag.js) - Google Analytics