我想将一些NSData上传到服务器,我想使用multipart方法。堆栈上有几个问题,但是,我希望能够在iOS上处理大文件,所以在内存中完全加载资源并不总是一个选项,我想知道我是否可以从磁盘流式传输文件,进入多部分请求。
此: File Upload to HTTP server in iphone programming
是我发现的众多问题之一,但正如您所看到的那样,他们会将数据加载到内存中,然后立即将其粘贴到请求中:
[postbody appendData:[NSData dataWithData:YOUR_NSDATA_HERE]];
有什么想法吗?
答案 0 :(得分:0)
您是否研究过可以传递给NSData
的{{1}}方法的选项?我自己没有尝试过,但似乎dataWithContentsOfURL:options:error:
可能有用:
答案 1 :(得分:0)
如果您使用NSURLSession
,则可以使用uploadTaskWithRequest:fromFile:
上传文件内容,任务负责读取文件。也许该任务以块的形式读取文件。
如果您没有文件中的数据,则可以使用uploadTaskWithStreamedRequest:
。您为任务提供了一个委托,该委托实现URLSession:task:needNewBodyStream:
以向任务提供输入流。您可以实现NSInputStream
来返回数据块。