我想上傳一個大文件2GB在後臺使用NSURLSessionUploadTask
。該服務使用多部分格式,所以爲了上傳它在後臺我創建一個臨時文件與請求的身體,然後我使用uploadTask來安排上傳,當文件完成上傳我刪除臨時文件。NSURLSession背景上傳大文件
NSURLSessionUploadTask *uploadTask = [[self backgroundNSURLSession] uploadTaskWithRequest:uploadRequest fromFile:filePath]; [uploadTask resume];
對於較小的則1.4 GB上傳文件的工作確定,但是當我嘗試上傳2 GB的視頻文件,上傳失敗。服務器正在返回錯誤消息,我沒有附加該文件。
我正在將上傳組件從ASIHTTP重構爲NSURLSession,如果我使用ASIHTTP進行上載,即使對於大型文件也是如此。
這是我如何創建我的NSURLSession:
if ([NSURLSessionConfiguration respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) {
self.configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:appID];
} else {
self.configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:appID];
}
self.configuration.HTTPMaximumConnectionsPerHost = 1;
self.configuration.discretionary = YES;
self.configuration.timeoutIntervalForResource = 60*60;
self.configuration.timeoutIntervalForRequest = 60*60;
backgroundSession = [NSURLSession sessionWithConfiguration:self.configuration delegate:self delegateQueue:nil];
所以,問題是隻針對大文件,對於小文件進行上傳。有沒有其他人遇到同樣的問題?
你確定它不是像timeoutIntervalForResource太簡單嗎? – 2015-06-22 12:18:58
我不確定這是否仍然有用,但是,我將timeIntervalForResource和forRequest更改爲一個巨大的值並仍然是相同的問題。 – 2016-10-31 11:22:44
你問這個問題後2年,那是一個很大的時間間隔! – 2016-10-31 14:43:04