0

我在使用uploadTaskfor a时遇到了一些奇怪的行为URLSessionConfiguration.background

我的自定义委托正在实现属于 、 和 的所有URLSessionDelegate委托URLSessionTaskDelegate方法URLSessionDataDelegate。它们都有一个print声明,表明该方法已被调用。

我正在尝试将五个图像上传到服务器,每个图像都有自己的会话,其 ID 与图像 ID 匹配。

问题是,当使用非常慢的连接“边缘”上传时,上传进度将在达到 100% 之前重置,只要didFinishCollectingMetrics调用就会发生这种情况,如您在此处看到的:数据

使用慢速连接时,这种情况不会一直发生,而只会在某些时候发生。

有人对这里发生的事情有任何想法吗?

4

2 回答 2

1

众所周知,边缘网络不可靠,频繁的上传失败并非不典型。解决此问题的方法是将基于整个文件的上传替换为某种形式的分块上传,以便您可以从中断的地方继续上传,但这需要服务器支持。

于 2016-12-15T18:09:37.040 回答
0

为请求和资源增加 NSURLSession 的超时时间:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
[configuration setTimeoutIntervalForRequest:120];
[configuration setTimeoutIntervalForResource:240];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];

用于session上传您的图片

于 2016-12-14T12:38:33.487 回答