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. python3实现socket通信

    目的:实现两台机器之间的通信.也就是说一个作为服务端(时刻监听接收数据),另一个作为客户端(发送数据). Python实现的过程个人理解: 1.服务端开始监听. 2.客户端发起连接请求. 3.服务端收 ...

  2. 线性表应用--Josephus问题的解法(Python 版)

    线性表应用 --Josephus问题的解法(Python 版) Josephus问题描述:假设有n个人围坐一圈,现在要求从第k个人开始报数,报到第m个数的人退出.然后从下一个人开始继续报数并按照相同的 ...

  3. python基础--os模块和sys模块

    os模块提供对操作系统进行调用的接口 # -*- coding:utf-8 -*-__author__ = 'shisanjun' import os print(os.getcwd())#获取当前工 ...

  4. java基础28 单例集合Collection下的List和Set集合

    单例集合体系: ---------| collection  单例集合的根接口--------------| List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合 ...

  5. malloc和free的实现

     C++ Code  12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...

  6. 文件下载功能django+js

    1. 功能叙述 前端web页面通过访问url+id的形式访问url lottery/draw/(?P<pk>(\d+))/download/ 后端代码通过orm查询pk相关数据 过滤出自己 ...

  7. Oracle与Sqlserver数据共享

    需求:在一个集成平台中有一个主系统使用的是Oralce数据库,子系统使用的SqlServer 数据库,如何让子系统的数据库与主系统的人员同步呢? 思路:通过服务WebService 公开接口 1.与主 ...

  8. 【PAT】1016 部分A+B(15 分)

    1016 部分A+B(15 分) 正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​.例如:给定 A=3862767,D​A​​=6,则 A  ...

  9. USACO 4.4 Shuttle Puzzle

    Shuttle PuzzleTraditional The Shuttle Puzzle of size 3 consists of 3 white marbles, 3 black marbles, ...

  10. bzoj 1263 [SCOI2006]整数划分

    n >= 6 的时候减3, 最后分类讨论, 上个Java import java.math.BigInteger; import java.util.*; public class Main { ...