我在一个文件中有 100 MB 的数据。这 100 mb 的数据将被虚拟分割。即,我需要创建一个 NSInputStream 指向不同的 5MB 块。
这可以通过使用 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/

10-11 00:32