比较1、2种方法,我觉得第2种比较好。你切割成6个做异步,不如一个文件做断点,切割还增加了客户端和服务器对文件操作的开销。
断点的话,服务器纪录一个传递的文件偏移位置,每次请求从返回的head中读取偏移量,然后,客户端通过NSFileHandle通过偏移读取文件到buffer再发送到服务器。
NSFileHandle *readHandle = [NSFileHandle fileHandleForReadingAtPath:filePath];
[readHandle seekToFileOffset:offset];
NSInputStream *fileStream = [NSInputStream inputStreamWithData:[readHandle readDataOfLength:1024*8]];