1. 这里只是说说异步 单线程下载与文件的保存
  2. 以下载一个mp3文件并保存为例:
  3. -(void)loading
  4. {
  5. //设置文件下载地址
  6. NSString *urlString = [NSString stringWithFormat:@"http://zhangmenshiting2.baidu.com/data2/music/14893666/14893666.mp3?xcode=f7e142418de081ff52f81344843b869a&mid=0.73830637514858"];//这里设置的是一个mp3的下载地址
  7. NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault, (CFStringRef)urlString, NULL, NULL,  kCFStringEncodingUTF8 );
  8. NSURL *url =[NSURL URLWithString:encodedString];
  9. //创建NSURLRequest和NSURLConnection,并立即启动连接
  10. NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5.0f];
  11. NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
  12. if (connection)
  13. {
  14. self.receivedData = [NSMutableData data];//初始化接收数据的缓存
  15. }
  16. else
  17. {
  18. NSLog(@"Bad Connection!");
  19. }
  20. [request release];
  21. [connection release];
  22. }
  23. - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
  24. {
  25. [receivedData setLength:0];//置空数据
  26. long long mp3Size = [response expectedContentLength];//获取要下载的文件的长度
  27. NSLog(@"%lld",mp3Size);
  28. }
  29. //接收NSMutableData数据
  30. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
  31. {
  32. [receivedData appendData:data];
  33. }
  34. //接收完毕
  35. - (void)connectionDidFinishLoading:(NSURLConnection *)connection
  36. {
  37. [connection cancel];
  38. //在保存文件和播放文件之前可以做一些判断,保证程序的健壮行:例如:文件是否存在,接收的数据是否完整等处理,此处没加,使用时注意
  39. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  40. NSString *documentsDirectory = [paths objectAtIndex:0];
  41. NSLog(@"mp3 path=%@",documentsDirectory);
  42. NSString *filePath = [documentsDirectory stringByAppendingPathComponent: mp3Name];//mp3Name:你要保存的文件名称,包括文件类型。如果你知道文件类型的话,可以指定文件类型;如果事先不知道文件类型,可以在- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response中获取要下载的文件类型
  43. //在document下创建文件
  44. NSFileManager *fileManager = [NSFileManager defaultManager];
  45. [fileManager createFileAtPath:filePath contents:nil attributes:nil];
  46. NSLog(@"mp3 path=%@",filePath);
  47. //将下载的数据,写入文件中
  48. [receivedData writeToFile:filePath atomically:YES];
  49. //播放下载下来的mp3文件
  50. [self playVoice:filePath];
  51. //如果下载的是图片则可以用下面的方法生成图片并显示 create image from data and set it to ImageView
  52. /*
  53. UIImage *image = [[UIImage alloc] initWithData:recvData];
  54. [imgView setImage:image];
  55. */
  56. }
  57. 简单的播放mp3文件的方法:
  58. 使用前要添加库:AudioToolbox.framework和AVFoundation.framework,
  59. //添加头文件
  60. #import <AVFoundation/AVFoundation.h>
  61. #import <AudioToolbox/AudioToolbox.h>
  62. -(void)playVoice:(NSString *)filePath
  63. {
  64. //播放文件的路径
  65. NSURL * musicURL= [[NSURL alloc] initFileURLWithPath:filePath];
  66. //创建音频 播放器
  67. AVAudioPlayer * voicePlayer  = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:nil];
  68. self.thePlayer = voicePlayer;
  69. [voicePlayer release];
  70. [musicURL release];
  71. [thePlayer setVolume:1];   //设置音量大小
  72. thePlayer.numberOfLoops = -1;//设置音乐播放次数  -1为一直循环
  73. //播放mp3,如果想要实现一些别的功能,可以看看AVAudioPlayer这个类,这里只是实现播放功能
  74. [thePlayer play];
  75. }

UIwebview 文件的下载与保存,以及mp3文件的播放的更多相关文章

  1. 使用a标签实现文件的下载与保存

    <a>标签的常规使用是定义超链接,用于从一个页面链接到另一个页面,并且需要指定链接目标href,除了定义超链接外,<a>还可以实现文件的保存,直接设置a标签的href属性,但是 ...

  2. html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)

    使用HTML语言来设计制作 Hyper Text Markup Language 超文本标记语言 这门语言的特点就是标记,就是把所有的命令单词用<>标记起来,就可以发挥作用 还有一个特点, ...

  3. 四、Mp3文件类型及其判断

    根据前两篇文章的分析,帧分为标签帧和数据帧,MP3文件类型是根据数据帧的类型来分的,文件类型如下表: 位率相等(Constant BitRate) CBR  Mp3文件 位率不等(Variable B ...

  4. 操作MP3文件的元数据

    参见:http://jingyan.baidu.com/article/03b2f78c4d5eae5ea237aee7.html 一.MP3文件的元数据 一个规则的MP3文件大致含有3个部分: TA ...

  5. 使用NSURLConnection实现大文件断点下载

    使用NSURLConnection实现大文件断点下载 由于是实现大文件的断点下载,不是下载一般图片什么的.在设计这个类的时候本身就不会考虑把下载的文件缓存到内存中,而是直接写到文件系统. 要实现断点下 ...

  6. ANDROID_MARS学习笔记_S01原始版_021_MP3PLAYER001_下载mp3文件

    一.简介 1.在onListItemClick()中new Intent,Intent以存储序列化后的mp2Info对象作为参数,启动serivce 2.DownloadService在onStart ...

  7. .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)

    .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...

  8. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  9. 使用URLConnection下载文件或图片并保存到本地

    有时候需要从网络上面下载图片到本地进行保存,代码如下: package com.jointsky.jointframe.test; import java.io.FileOutputStream; i ...

随机推荐

  1. 经典面试题:js继承方式上

    js不是传统的面向对象语言,那么他是怎么实现继承的呢?由于js是基于原型链实现的面向对象,所以js主要通过原型链查找来实现继承,主要有两大类实现方式,分为基于构造函数的继承,以及非构造函数的继承. 由 ...

  2. arp命令 清arp表

    平常删除arp都用arp-d.大量存在的时候 arp -n|awk '/^[1-9]/ {print arp -d $1}' | sh 清除所有arp表,以前用这个来清arp表貌会清空,没注意到存在i ...

  3. web项目引入extjs小例子

    一个新的项目,前端用extjs实现!分享一下extjs开发的准备工作! 首先去下载extjs的资源包,这里我是随便在网上下载的! 打开之后 ,目录是这样的! 需要关注的几个文件夹: builds:压缩 ...

  4. SQL Server操作实例

    创建数据库 create database accountInfo/*创建账户信息数据库*/ 创建数据表 /*定义主码.外码.和人数.余额的取值范围.*/ /*创建储蓄所表*/ create tabl ...

  5. hdu 3389 阶梯博弈

    题意:1-N带编号的盒子,当编号满足A>B && A非空 && (A + B) % 3 == 0 && (A + B) % 2 == 1则可以从A ...

  6. CF293B. Distinct Paths

    B. Distinct Paths time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  7. C# 文件下载断点续传

    C# 文件下载断点续传的一个类 using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  8. Gitlab-通过API管理项目

    Gitlab有一个非常强大的API,几乎可以通过API管理在Gitlab服务器中的所有项目. 在这里我们只是测试终端点的API, 因此我们需要一个程序来进行测试 .在这里我使用的是针对Google浏览 ...

  9. 8-2 Building for UN Uva1605

    题意:你的任务是设计一个包含若干层的联合国大楼,其中每层都是一个等大的网络 由若干个国家需要在联合国大楼里面办公 你需要把每个格子分配给一个国家 使得任意两个不同的国家都有一对相邻的格子  (要没是同 ...

  10. 7-13 Power Calculus 快速幂计算 uva1374

    想到快速幂  但是这题用不上 用迭代加深搜索 注意启发函数为  当前最大数<<(maxx-d)  如果大于n则剪枝 注意跳出语句的两种写法   一种170ms  一种390ms !!! d ...