ios - NSInputStream 可以用来读取带有偏移量的数据块,以便能够上传大文件
问题描述
我想知道是否有一种方法可以NSInputStream
用来读取具有一定偏移量的数据块。例如,有一个大小为 100MB 的文件,我需要大小为 10MB 的块,但我需要在第一个块之前的第 5 个块。
目标是能够将大文件上传到服务器。后端需要可以立即发送的数据块。例如,这个想法是使用NSOperationQueue
并设置maxConcurrentOperationCount
为 5。每个任务都需要不同的块来发送。我知道- (NSData *)subdataWithRange:(NSRange)range
——但这将要求整个NSData
人一直都在记忆中。这不适用于大文件,所以我更喜欢使用NSInputStream
. 是否可以乱序读取块NSInputStream
以及如何或应该使用另一种方法?
解决方案
您可以基于文件打开NSInputStream
,然后使用NSStreamFileCurrentOffsetKey
属性指定所需的偏移量。同时,在NSURLRequiest
with NSInputStream
inside实现上传的情况下,chunk的大小不在你的控制范围内。它的值硬编码在 CFNetworking 框架中。
推荐阅读
- mysql - 和负整数给出错误的结果
- html - IE11 风格背景色
- html - 如何在标签上设置多个字体以显示文本?
- django - Django:仅当用户提交表单或保存模型时才允许用户进一步访问
- python - AWS Glue 执行者死亡
- c# - Atata:如何跳过 NoSuchElementException?
- docker - 将 filebeat 连接到 Kibana
- jenkins - 如果 Maven 测试失败,如何使声明性 Jenkins 管道失败?
- javascript - 来自 AJAX 的 .NET Core 控制器输入始终为空
- firebase - 在 Firebase 子目录中添加 Ghost 博客