5

我正在尝试在后台使用NSURLSessionUploadTask. 该服务使用多部分格式,因此为了在后台上传它,我正在使用请求的正文创建一个临时文件,然后我使用 uploadTask 来安排上传,当文件完成上传时,我正在删除临时文件.

NSURLSessionUploadTask *uploadTask = [[self backgroundNSURLSession] uploadTaskWithRequest:uploadRequest fromFile:filePath]; [uploadTask resume];

对于小于 1.4 GB 的文件,上传工作正常,但是当我尝试上传 2 GB 的视频文件时,上传失败。服务器返回我没有附加文件的错误消息。

如果我使用 ASIHTTP 进行上传,我正在将上传组件从 ASIHTTP 重构为 NSURLSession,它甚至适用于大文件。

这就是我创建 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];

所以问题只针对大文件,对于小文件执行上传。有没有其他人遇到过同样的问题?

4

1 回答 1

0

根据苹果开发者的属性判断 ,如果文件太大,系统可能正在等待WIFI连接之类的好时机。

将任意属性切换为 NO 并重试。祝你好运!

self.configuration.discretionary = NO;
于 2017-09-21T07:54:48.800 回答