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. java基础81 jsp的内置对象(网页知识)

    1.什么是内置对象? 在jsp开发中,会频繁使用到一些对象,如:HttpSession,ServletContext,HttpServletRequest.      如果每次使用这些对象时,都要去创 ...

  2. C++ : Boost : Rational 有理数类

    因为一些不为人知的原因, 我需要一些能减少我程序误差的东西.于是找到了这个类. 然后下载了Boost这个庞大的库. 安装与配置 在官网上找到下载地址, 大概有71MB, 下来来解压到任意位置就好了. ...

  3. java IO流的继承体系和装饰类应用

    java IO流的设计是基于装饰者模式&适配模式,面对IO流庞大的包装类体系,核心是要抓住其功能所对应的装饰类. 装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的 ...

  4. NOIP2015 D2T3 运输计划

    拿到题目的第一眼 首先这是一棵n个节点的树(别说你看不出来) 然后对于树上的m条链我们可以选取树上的唯一一条边使它的边权变为0 求处理后最长链的长度 20分 m=1好啦,好像可做一眼望去全是水 只需求 ...

  5. SQLSERVER 2008 编辑所有或者任意行

    选中表 右键选择“编辑前200行”,然后选择左上角的 sql图标,然后在右侧的SQL语句去掉 top 200 然后执行查询 就可以编辑所有的行了,可以选择自己需要写SQL,然后查询编辑. 第二种方法: ...

  6. 安装SHARP MX-3618NC PCL6打印机驱动程序

    第一步,  打开MX-CR3_PCL_PS_1302a_ChineseS_Win8Server2012.exe 驱动程序 此驱动支持Win8.Server2012及以下版本的操作系统,同时兼容Win1 ...

  7. BC-NFS安装依赖

    [root@BC-NFS01 glusterFS_installer]# sh install_local.sh 18-09-19 22:43:28 [install_local.sh] INFO : ...

  8. hdoj2955 Robberies(01背包)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意 有n家银行,每家银行有两个属性:钱数m,概率p,p表示抢这家银行被逮着的概率.有一个人想抢 ...

  9. 设置 cookie过期时间

    cookie.setMaxAge(0);//不记录cookie cookie.setMaxAge(-1);//会话级cookie,关闭浏览器失效 cookie.setMaxAge(60*60);//过 ...

  10. Servlet的一点小结

    1.什么是servlet servlet是一个Java applet,一个帮助程序.用于帮助浏览器从服务器中获取资源.浏览器-servlet-服务器三者的关系如图所示. 2.servlet的生命周期 ...