我使用NSURLSession
從資源庫上傳照片到服務器有一些問題。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'
這真是奇怪,因爲蘋果的手冊不包含有關使用僅uploadTaskWithRequest:fromFile:
背景會話的任何信息,試圖利用當我得到了一個例外。如果我想要從素材資源庫中上傳真正龐大的視頻文件,該怎麼辦?我應該將它保存到我的tmp目錄嗎?
貌似唯一的原因就是反正用uploadTaskWithRequest:fromFile:
吧?但是,接下來我有一個問題,即如果上傳過程中斷並開始在後臺上傳下一部分,服務器如何知道文件的哪部分內容正在上傳?
我應該爲此做些什麼?以前,如果我想繼續上傳先前啓動的部分文件,我在URL請求中使用了Content-Range。現在我不能那樣做 - 我必須在創建上傳任務之前創建一個URL請求,並且看起來像NSURLSession
必須爲我自動執行類似操作嗎?
有人做過這樣的事嗎?由於
當我閱讀文檔時,非常清楚您必須提供背景文件。不確定你的問題 - 如果文件只是部分上傳,並且你的服務告訴你它已經收到了多少,那麼你可以修剪你的文件並重新發送未發送的部分,不。我沒有這樣做的經驗,但似乎可行。 –
是的,一切都看起來可行,但有一個問題,如果我想要從素材資源庫上傳一個巨大的視頻,我必須將它複製(如果我有足夠的空間)到我的應用程序文件夾,然後開始複製,然後從時間定時檢查已上傳的內容,修剪文件並開始新的請求。但是蘋果的文檔告訴我必須爲每個文件創建一個任務。 – gN0Me
我對資產庫沒有經驗 - 什麼是您將用來檢索視頻的框架或類? –