到目前为止,也就是iPhone SDK 2.2 ,苹果仍然没有为开发者提供一个文件传输的解决方案。如果一个应用需要为用户提供往iPhone上传文件的功能,大抵会采用下面几种方法之一:

  1. 通过一个链接从网上下载。
  2. 提供一个客户端,通过自己的协议上传。
  3. 支持FTP传输协议。
  4. 在iPhone上启动一个http服务,通过浏览器上传。
  5. 比上一个更进一步,在http上支持WebDAV,通过改协议上传。

上面这些方法各有利弊。前两种方式虽然开发比较简单,但用户操作不方便,采用的比较少了。使用FTP在一些系统上还是需要额外的客户端软件,也不算方便。WebDAV的方式现在比较流行,Air Sharing和Discover都采用了这种方式。

在做iPhone版iChm时,也需要提供文件上传的功能。我选择了第四个方案,即提供一个http service,通过浏览器上传。这个方案虽然不能象WebDAV那样在一些系统上直接mount到文件系统中,但对于几乎所有带浏览器的系统,它都不需要再安装额外的客户端,实现起来也比WebDAV简单很多。

在http server的选择上,可以porting现有的成熟产品,但是对于这样的应用,apache或者lighttpd等方案都过于庞杂了,实际上只是需要一个很简单的服务。最后找到cocoahttpserver,是由Deusty Designs开源的一个项目,支持异步socket,IPv4和IPv6,HTTP Authentication和TLS加密,小巧玲珑。除了只支持GET方法这一点以外,其他可以说该有的都有,该没有的都没有了。

我对cocoahttpserver做了扩展,首先实现了Multipart POST的支持。在增加文件传输功能的设计上,我将文件当作一个资源(resources),采用了REST的方式:

方法 功能
GET 文件列表,文件下载
POST 上传新文件
DELETE 文件删除

这样的设计,无论从接口的角度,还是从实现的角度,都比较清晰明了。

在iChm 1.0发布后做了些修正,iChm 1.0.1后相对稳定了。现在我将文件传输这部分代码open source出来:
Cocoa Web Resource Project
主要功能如下:

  • 支持通过浏览器向iPhone/iPod Touch上传文件,支持文件下载和删除。
  • 内存优化,支持大文件上传。
  • 可定制的web界面。
  • web界面支持IE, Safari, Firefox等主流浏览器。
  • RESTful API。

希望可以对iPhone开发者有所帮助。



iPhone / iPod Touch 文件传输解决方案 – 开源框架:Cocoa Web Resource Project相关推荐

  1. 大文件传输解决方案:分片上传 / 下载限速

    前言 不少项目中会遇到上传下载视频.更新包.应用程序等文件,此类文件的共同点就是十分巨大,我在项目中遇到过 4G 左右的文件同时 100 多台机器下载,此时如果用 post 上传和下载想一下都不可能, ...

  2. 如何从iPhone / iPod Touch / iPad连接

    如何从iPhone / iPod Touch / iPad连接 本文将介绍从iPhone / iPod Touch / iPad等设备连接到已启用L2TP over IPsec功能的PacketiX ...

  3. 【转】Downgrade iOS 4 to OS 3.1.3/3.1.2 (iPhone, iPod Touch)

    http://www.iphoneheat.com/2010/07/downgrade-ios-4-to-os-3-1-3-3-1-2-iphone-ipod-touch/ 请注意红色部分,没有备份s ...

  4. 如何实现文件高速传输,推荐镭速高速文件传输解决方案

    随着互联网的发展,文件传输越来越频繁,如何实现文件高速传输已经越来越成为企业发展过程中需要解决的问题, 在当今的业务中,随着与客户和供应商以及内部系统的所有通信的数据量不断增加,对高速文件传输解决方案 ...

  5. 邮箱附件、QQ、微信等社交工具大文件传输解决方案

    工具说明:适用于邮箱附件.QQ.微信.钉钉.网盘等场景的大文件分割存储和传输. 下载地址:https://download.csdn.net/download/hj960511/85012515 作者 ...

  6. 如何分发大文件、大文件传输解决方案

    随着云计算.大数据技术不断发展,4K 视频.虚拟现实(VR).视频直播等互联网应用领域不断升级更新,企业网.数据中心规模持续扩大,企业拥有的数据急剧增长,海量文件随之产生. 同时,互联网时代,众多行业 ...

  7. 媒体查询在iPhone iPod touch中使用safari浏览器失效的原因

    在iphone和ipod touch中使用的Safari浏览器会出现媒体查询失效这是为什么呢 这是因为在iphone中使用Safari浏览器在进行页面显示时,将窗口宽度当做980px像素进行显示.所以 ...

  8. 超大文件传输解决方案

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  9. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '57x57' pixels

    遇到这个问题问题,搜索了一圈要么不知道,要么喊改deploymenet target, 最后我是在项目属性-info-icon files(ios5)-下面添加了一个icon,然后弄了个icon.pn ...

最新文章

  1. 助力高校学子快速上手!昇腾AI处理器应用开发实践一览|华为昇腾师资培训沙龙北京场...
  2. Alternative PHP Cache ( APC )
  3. linux同时链接多个库,通过Shell脚本同时监控多个数据库负载
  4. 中国全装修行业发展形势及投资决策建议报告2022版
  5. mysql mac 环境变量配置_mac安装mysql数据库及配置环境变量
  6. 我希望的未来职业发展!!!!!!!!!!想了半年的最终的结果~好像又没有变化哈哈哈哈
  7. 入门级实操教程!从概念到部署,全方位了解K8S Ingress!
  8. idea 查看jsp是否被引用_IntelliJ IDEA解析JSP中的Web路径
  9. 英文版Ubuntu 16.04系统如何解决gedit中文显示乱码的问题
  10. python素材和代码_python之文件和素材
  11. IT部门绩效考核:一本糊涂账?
  12. 当涌泉相报局域网聊天
  13. 从零开始搭建口袋妖怪管理系统(3)-实现一个简单的SPA管理系统
  14. Map习题 - 三国武将基础信息处理
  15. Pyserial安装
  16. 纯js油猴插件版GUI页面助手
  17. workunit 的指的工作单元是什么_workunit是什么意思
  18. 阿里云安全防护是如何做到的?有怎样的安全生态圈
  19. 【一】MADDPG-单智能体|多智能体总结(理论、算法)
  20. SVG - 在Android中使用矢量图全攻略

热门文章

  1. cass出现验证许可_南方cass简码识别不能使用,出现如图情况,什么原因怎么解决?...
  2. tesseract:从图片中识别文字信息
  3. vue使用qrcodejs2生成带log的二维码图片,vue生成二维码图片中间带log,自定义log
  4. 三分钟教你读懂票据是什么
  5. 卜若的代码笔记-一周搞定树莓派-第十七章:(QT基础七:定时器)
  6. 如何做新品网络营销推广?
  7. 【ubuntu】设置热点把电脑用作路由器发射wifi
  8. Python实现企业微信群机器人自动化推送
  9. 360手机卫士会影响Widget的运行
  10. Unity iPhone 1.7已准备就绪,可用于iPad游戏