如何获得多个分段上传任务的上传进度

时间:2017-09-26 04:50:57

标签: ios xcode swift3 alamofire

我使用下面的代码进行上传进度,但如果我上传4张图片,如何获得个人上传的进展。

Alamofire.upload(multipartFormData:{ multipartFormData in

                multipartFormData.append(data, withName: alamoName, fileName: alamoFileName, mimeType: alamoMimeType)
                for (key, value) in parameters {
                    multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
                }
            },to:requestUrl){ (result) in
                switch result {
                case .success(let upload, _,_):
                    upload.uploadProgress(closure: { (progress) in
                        print("Upload Progress:%d", progress)
                    })
                    upload.responseJSON { response in
                        if(response.result.value != nil){
                            let uploadResponse = response.result.value as! Dictionary <String ,Any>
                            self.didUpdateResponse(sender: uploadResponse)
                        }
                    }
                case .failure(let encodingError):
                    print(encodingError)
                }

2 个答案:

答案 0 :(得分:0)

如果您有四次上传(我假设我们正在谈论四次单独的上传而不是一次上传四个文件的请求),则每个Alamofire upload对象都已拥有自己的uploadProgress属性。

因此,如果您正在使用UIProgressView,则根本不需要实施uploadProgress 方法(就像您在示例中所做的那样) ,而只是将observedProgress的{​​{1}}设置为Alamofire UIProgressView的{​​{1}} 属性

答案 1 :(得分:-1)

请使用NSOperationQueue和NSOperation。您需要继承NSOperation以执行图像下载。使用图像ID或URL来区分图像下载进度。此外,您可以使用该块通知观察者更新进度。