文件下载方式:

  • 如果下载的文件比较小,下载方式:

    • 直接用NSData的 +(id)dataWithContentsOfURL:(NSURL*)url;
    • 利用NSURLConnection发送一个HTTP请求去下载
    • 如果是下载图片,还可以利用SDWebImage框架(本文这里不描述)
  • 如果下载的文件比较大,下载方式:

    • 使用NSConnectionDataDelegate代理方法(本文这里描述下载15M左右的文件,也算是小文件)
    • 建议使用NSURLSession或者第三方框架(本文这里不描述)

代码示例:

  先给出用来做代码练习的API接口

  小图片:http://img2.duitang.com/uploads/blog/201310/18/20131018213446smUw4.thumb.7000.jpeg

  MP4小视频(15M左右):http://120.25.226.186:32812/resources/videos/minion_03.mp4

  

1、下面展示一下下载小图片这样小文件的两种方式:

  对于第二种通过NSURLConnection的异步请求的方式也可以请求稍大一些的文件,比如MP4小视频文件,但是因为文件比较大,所以会出现等好久才会得到结果,其实就是

  出现了阻塞,因为是异步请求,所以不会影响主线程,如果用的是同步请求,那就会影响主线程喽。你可以试试,这里就不出源码了。

  2、再接下来介绍一下如何使用NSURLConnectionDataDelegate代理方法来对这个MP4小视频(15M左右)稍大一些的文件

  注意:仅仅是稍大一些的文件,但是下面的过程,通过打开沙盒文件,你会发现,下面的下载方式,是等待内存中加载完全部下载的数据,最后一并放入沙盒中存储的。

       这个过程,绝对不适合更大的文件下载,比如下载几百M的视频文件,肯定会出问题的。

  同时展示一下打印结果:

 

源码百度云分享链接: http://pan.baidu.com/s/1jHycCIU 密码: 9kum

关于使用NSURLConnection实现大文件下载请看下一篇随笔:iOS开发之网络编程--使用NSURLConnection实现大文件下载

iOS开发之网络编程--小文件下载的更多相关文章

  1. iOS开发之网络编程--使用NSURLConnection实现大文件下载

    主要思路(实现下载数据分段写入缓存中) 1.使用NSURLConnectionDataDelegate以及代理方法.2.在成功获取响应的代理方法中,获得沙盒全路径,并在该路径下创建空文件和文件句柄.3 ...

  2. iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>

    前言:根据前篇<iOS开发之网络编程--2.NSURLSessionDownloadTask文件下载>或者<iOS开发之网络编程--3.NSURLSessionDataTask实现文 ...

  3. iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载(离线断点续传下载)

    前言:使用NSURLSessionDownloadTask满足不这个需要离线断点续传的下载需求,所以这里就需要使用NSURLSessionDataTask的代理方法来处理下载大文件,并且实现离线断点续 ...

  4. iOS开发之网络编程--2、NSURLSessionDownloadTask文件下载

    本文内容大纲: 1.回顾NSURLSessionTask 2.NSURLSessionDownloadTask大文件之block下载 3.NSURLSessionDownloadTask大文件之代理方 ...

  5. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄

    前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传.    在实际开发中,输入输出流用的比较少,但 ...

  6. iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传

    前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...

  7. iOS开发之网络编程--使用NSURLConnection实现文件上传

    前言:使用NSURLConnection实现文件上传有点繁琐.    本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...

  8. IOS开发之网络编程--文件压缩和解压缩

    前言: QQ表情包就用到了解压缩,从网络下载的那么多表情文件格式并不是一个一个图片文件,而是多个图片压缩而成的表情压缩包.下面介绍的是iOS开发中会用到的压缩和解压缩的第三方框架的使用. 注意: 这个 ...

  9. iOS开发之网络编程--XCode7 更新以来需要手动设置的内容

    XCode7 更新以来,默认是不允许加载一些http网络请求,是因为现在网络大部分使用更安全的https协议头. 所以,iOS网络编程如果出现请求无效,事先考虑是否设置一下了以下操作:

随机推荐

  1. 关于VR技术和未来发展---转

    原文地址:http://mp.weixin.qq.com/s?__biz=MzA4MTIwNTczMQ==&mid=2651345594&idx=3&sn=2741ab7321 ...

  2. vuejs入门小demo-搜索大全

    这个demo非常适合入门的同学,不再是简单的todolist.用到的知识点有组件通信,过渡效果,vue-rsource,还有一些基本的vue指令. 先放一张截图: 是不是感觉高端大气上档次呢,演示地址 ...

  3. 微软开源的30个基础设施项目-C#

    .NET Compiler Platform ("Roslyn") .NET Core 5 .NET Micro Framework .NET SDK For Hadoop ASP ...

  4. Python入门版

    一.前言 陆陆续续学习Python已经近半年时间了,感觉到Python的强大之外,也深刻体会到Python的艺术.哲学.曾经的约定,到现在才兑现,其中不乏有很多懈怠,狼狈. Python入门关于Pyt ...

  5. CSS3属性transform详解

    在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾斜.移动这四种类型的变形处理,本文将对此做详细介绍. 一.旋转 rotate 用法:transform: rotate(45 ...

  6. Redis持久化-数据丢失及解决

    Redis的数据回写机制 Redis的数据回写机制分同步和异步两种, 同步回写即SAVE命令,主进程直接向磁盘回写数据.在数据大的情况下会导致系统假死很长时间,所以一般不是推荐的. 异步回写即BGSA ...

  7. unity3d拓展编辑器Editor的使用

    Editor可以拓展Inspector窗口 可以通过代码自己绘制监测面板 先来看一个效果:

  8. 【Asphyre引擎】发布了新版本V101

    引擎简称还是PXL,但是这个P是Platform而不是Pascal. 修复了一些bug,增加了轻量级的随机数发生器,进一步完善了XML的解析. 不是很明白,为何把Pascal扩展库改成Platform ...

  9. Hibernate之映射文件中索引及约束的使用

    1.添加索引: 在一对多的关系中,在多的一方会产生一个外键,这个外键没有自动 添加索引,当存在从一的一端产生对多的一端的查询时,有可能会在多的一端造成全表查询问题,数据量巨大时会产生严重的性能问题.可 ...

  10. Hibernate中的一级缓存、二级缓存和懒加载(转)

    1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...