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. [shell]shell中if语句的使用

    转自:http://lovelace.blog.51cto.com/1028430/1211353 bash中如何实现条件判断?条件测试类型:    整数测试    字符测试    文件测试 一.条件 ...

  2. mysql数据库查找类型不匹配

    无意中看到10级学长的博客,提到了mysql数据库类型查找不匹配的问题,博客地址是:卢俊达 . 数据库中建表中会对每个属性进行类型划分,然后在查找数据库select时: MySQL 的文档 (Type ...

  3. python图片处理(一)

    在matlab中有相应的图像进行二值化处理,并且标记连通区域 L = bwlabel(BW,n) 返回一个和BW大小相同的L矩阵,包含了标记连BW中每个连通区域的类别标签,标签的值是1.2.num(连 ...

  4. SQL技巧两则:选择一个表的字段插入另一个表,根据其它表的字段更新本表内容

    最近,在作django数据表迁移时用到的. 因为在django中,我把本来一个字符型字段,更改成了外键, 于是,哦喝~~~字符型字段相当于被删除了, 为了能导入这些字段的外键信息,于是出此下策. 其实 ...

  5. Delphi IdTCPClient IdTCPServer 点对点传送文件

    https://blog.csdn.net/luojianfeng/article/details/53959175 2016年12月31日 23:40:15 阅读数:2295 Delphi     ...

  6. uc 下载页面 记录备份

    记录一下 <!doctype html> <html> <head> <meta charset="utf-8"> <titl ...

  7. springboot之使用@ConfigurationProperties注解

    springboot之使用@ConfigurationProperties注解 代码已经上传至github https://github.com/gittorlight/springboot-exam ...

  8. EcOS安装

    从ubuntu 拷贝到 centos cd /media ls cd ./sf_EcOS 这个目录就是共享目录,名字可能不一样 cp -r studio.zip /home/ 1. 查看版本 cent ...

  9. caffe 中 plot accuracy和loss, 并画出网络结构图

    plot accuracy + loss 详情可见:http://www.2cto.com/kf/201612/575739.html 1. caffe保存训练输出到log 并绘制accuracy l ...

  10. hdu-3790最短路刷题

    title: hdu-3790最短路刷题 date: 2018-10-20 14:50:31 tags: acm 刷题 categories: ACM-最短路 概述 一道最短路的水题,,,尽量不看以前 ...