我正在尝试使用NSURLSessionUploadTask
在后台上传大容量的2GB文件。该服务使用多部分格式,所以为了在后台上传我正在创建一个带有请求主体的临时文件,然后我使用uploadTask来安排上传,当文件完成上传时我正在删除临时文件
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];
因此问题仅适用于大文件,对于小文件,则执行上载。还有其他人遇到过同样的问题吗?
答案 0 :(得分:0)
根据苹果开发者对财产discretionary的描述 如果文件太大,系统可能正在等待像WIFI连接这样的好时机。
将自由选择属性切换为NO,然后重试。祝你好运!
self.configuration.discretionary = NO;