从流中上传多部分的NSData?

时间:2016-04-01 15:24:12

标签: ios multipart

我想将一些NSData上传到服务器,我想使用multipart方法。堆栈上有几个问题,但是,我希望能够在iOS上处理大文件,所以在内存中完全加载资源并不总是一个选项,我想知道我是否可以从磁盘流式传输文件,进入多部分请求。

此: File Upload to HTTP server in iphone programming

是我发现的众多问题之一,但正如您所看到的那样,他们会将数据加载到内存中,然后立即将其粘贴到请求中:

[postbody appendData:[NSData dataWithData:YOUR_NSDATA_HERE]];

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您是否研究过可以传递给NSData的{​​{1}}方法的选项?我自己没有尝试过,但似乎dataWithContentsOfURL:options:error:可能有用:

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/#//apple_ref/c/tdef/NSDataReadingOptions

答案 1 :(得分:0)

如果您使用NSURLSession,则可以使用uploadTaskWithRequest:fromFile:上传文件内容,任务负责读取文件。也许该任务以块的形式读取文件。

如果您没有文件中的数据,则可以使用uploadTaskWithStreamedRequest:。您为任务提供了一个委托,该委托实现URLSession:task:needNewBodyStream:以向任务提供输入流。您可以实现NSInputStream来返回数据块。