您好,匿名用户
随意问技术百科期待您的加入

iOS中提高上传大文件效率的方法?

+1 投票
我需要从iOS上传一个大约30MB左右的大文件到服务端,现在我就用了ASI的那个FormRequest,但是文件太大了,传起来超级慢,而且中间一旦出现问题,就得重新传输。

我现在想到两个优化的办法

  1. 分割文件,并行传输。就是把大文件分割成6部分,然后同时运行6个异步进程,然后服务端再合并。但我有个担心是,iPhone真的可以并行处理6个上传链接吗?而且会不会受带宽影响,效率跟一个文件传比怎么样?
  2. 另一个是断点续传,在时间上进行分割。但我没有找到什么好的断点方案,也没有思路,求一个思路或者方案。
用户头像 提问 2012年 12月12日 @ Saber 中士 (1,234 威望)
分享到:

1个回答

+1 投票

比较1、2种方法,我觉得第2种比较好。你切割成6个做异步,不如一个文件做断点,切割还增加了客户端和服务器对文件操作的开销。

断点的话,服务器纪录一个传递的文件偏移位置,每次请求从返回的head中读取偏移量,然后,客户端通过NSFileHandle通过偏移读取文件到buffer再发送到服务器。

NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
[readHandle seekToFileOffset:offset];
NSInputStream *fileStream = [NSInputStream inputStreamWithData:[readHandle readDataOfLength:1024*8]];
用户头像 回复 2012年 12月13日 @ Rammus 上等兵 (334 威望)
提一个问题:

相关问题

+1 投票
1 回复 59 阅读
0 投票
0 回复 6 阅读
用户头像 提问 2014年 4月3日 @ Pisces 上等兵 (182 威望)
+1 投票
1 回复 150 阅读
0 投票
1 回复 51 阅读
用户头像 提问 2012年 12月1日 @ Caster 上等兵 (256 威望)
+1 投票
1 回复 62 阅读
用户头像 提问 2013年 1月19日 @ Kyrie 上等兵 (240 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...