我在使用NSURLSession
将照片从资产库上传到服务器时遇到了一些问题。
起初NSURLSession
不支持流式上传。尝试使用它时出现异常:
@property (nonatomic, strong) NSURLSession *uploadSession;
...
_uploadSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration
backgroundSessionConfiguration:kUploadBackgroundURLSessionIdentifier] delegate:self delegateQueue:nil];
...
NSURLSessionUploadTask *task = [self.uploadSession uploadTaskWithStreamedRequest:URLRequest];
这是一个例外:
Terminating app due to uncaught exception 'NSGenericException', reason: 'Upload tasks in background sessions must be from a file'
这真的很奇怪,因为 Apple 的手册不包含任何关于仅uploadTaskWithRequest:fromFile:
用于后台会话的信息。如果我想从资源库上传非常大的视频文件怎么办?我应该先将它保存到我的 tmp 目录吗?
看起来唯一的原因是uploadTaskWithRequest:fromFile:
无论如何都要使用,对吧?但是我有一个问题,如果上传过程被中断并开始在后台上传下一部分,服务器如何知道现在正在上传文件的哪一部分?
我应该为此做点什么吗?以前,如果我想继续上传之前启动的部分文件,我会在 URL 请求中使用 Content-Range。现在我不能这样做 - 我必须在创建上传任务之前创建一个 URL 请求,并且看起来NSURLSession
必须为我自动执行类似的操作?
有人已经这样做了吗?谢谢