首页 > 开发 > iOS > 正文

iOS中如何提高上传大文件的效率

2017-09-08 14:03:27  来源:网友分享

我有个需求是从iOS上传一个大约30MB左右的大文件到服务端,现在我就用了ASI的那个FormRequest,但是文件太大了,传起来超级慢,而且中间一旦出现问题,就得重新传输。
我现在想到两个优化的办法

  1. 分割文件,并行传输。就是把大文件切割成5部分,然后同时运行五个异步进程,然后服务端再合并。但我有个担心是,iPhone真的可以并行处理5个上传链接吗?而且会不会受带宽影响,效率还不如一个文件传。
  2. 另一个是断点续传,在时间上进行分割。但我没有找到什么好的断点方案,也没有思路,求一个思路或者方案。

解决方案

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

	NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];	[readHandle seekToFileOffset:offset];    NSInputStream *fileStream = [NSInputStream inputStreamWithData:[readHandle readDataOfLength:1024*8]];

对于1,你切割成5个做异步,不如一个文件做断点,切割还增加了客户端和服务器对文件操作的开销。