ios - 子类化 NSInputStream 以从本地文件路径上传特定部分的数据

标签 ios objective-c nsstream nsinputstream cfreadstream

我在一个文件中有 100 MB 的数据。这 100 mb 数据将被虚拟地划分。即,我需要创建一个指向不同 5MB block 的 NSInputStream。 这可以通过使用 NSData 创建流来实现。

但我想知道我是否可以拥有一个指向文件中一系列数据的 NSInputStream?

最佳答案

如果您想通过将 NSInputStream 实例传递给 NSURLRequest.HTTPBodyStream 来上传文件,您确实必须创建 NSInputStream 的子类并且仅流式传输您要上传的字节。使用 NSFileHandle 不是这里的选项。

创建一个 NSInputStream 的子类来与 NSURLRequest 一起工作是相当棘手的,但幸运的是这里有一个 great blog post关于如何实现它。

Here you can find a ready to use subclass of NSInputStream for this purpose .

您可以将 ChunkInputStream 与另一个读取文件的 NSInputStream 一起提供,并传递起始位置和要读取的字节数。

快速示例:

let fileInputStream = NSInputStream(fileAtPath: "/tmp/readme")
let inputStream = ChunkInputStream(inputStream: fileInputStream)
inputStream.startPosition = 2097152
inputStream.readMax = 1048576

关于ios - 子类化 NSInputStream 以从本地文件路径上传特定部分的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16359061/

相关文章:

ios - SKAction 跟随路径同时进行定向和旋转

objective-c - iOS:获取图像标签

ios - 如何在 iOS 9+ 中使用 AVPlayer 实现 'Adaptive Bit Rate' (HLS)

ios - 未知对象类型的zlib解压方法

ios - SQLite 持久化项目 : errorMsg

ios - 更改具有只读访问权限的 PFObject ACL 权限

objective-c - 在继续方法之前等待一些可变时间完成

ios - 将字节附加到 NSInputStream 以便稍后顺序读取

iphone - 流式获取数据 - NSInputStream

ios - 使用 iOS Storyboard动态调整 UILabel 的高度