首页 > 解决方案 > NSInputStream 可以用来读取带有偏移量的数据块,以便能够上传大文件

问题描述

我想知道是否有一种方法可以NSInputStream用来读取具有一定偏移量的数据块。例如,有一个大小为 100MB 的文件,我需要大小为 10MB 的块,但我需要在第一个块之前的第 5 个块。

目标是能够将大文件上传到服务器。后端需要可以立即发送的数据块。例如,这个想法是使用NSOperationQueue并设置maxConcurrentOperationCount为 5。每个任务都需要不同的块来发送。我知道- (NSData *)subdataWithRange:(NSRange)range——但这将要求整个NSData人一直都在记忆中。这不适用于大文件,所以我更喜欢使用NSInputStream. 是否可以乱序读取块NSInputStream以及如何或应该使用另一种方法?

标签: iosnsinputstream

解决方案


您可以基于文件打开NSInputStream,然后使用NSStreamFileCurrentOffsetKey属性指定所需的偏移量。同时,在NSURLRequiestwith NSInputStreaminside实现上传的情况下,chunk的大小不在你的控制范围内。它的值硬编码在 CFNetworking 框架中。


推荐阅读