我想上传一个大文件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