Почему процесс загрузки для Alamofire никогда не достигает завершения 1.0 во время загрузки? - PullRequest
0 голосов
/ 04 сентября 2018

Я могу успешно загружать файлы, используя alamofire. Тем не менее, я пытаюсь отслеживать ход загрузки. Я обнаружил, что, хотя загрузка прошла успешно, так как я вижу, что мои файлы успешно загружены на сервер, средство отслеживания прогресса никогда не достигает 1.0. Это имеет тенденцию заканчиваться между 8.00 - (под 1.0), но никогда не достигает 1. Это создает проблемы, поскольку мне нужно обработать завершение загрузки файла.

 Alamofire.upload(
        multipartFormData: { multipartFormData in
            for(key, value) in sendParamters{
                multipartFormData.append((value.data(using: .utf8)!), withName: key)
            }

            for fileURL in arrayURLToUpload{
                print("fileURL: \(fileURL)")
                multipartFormData.append(fileURL, withName: "file[]")
            }
    },
        to: UPLOAD_URL,
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    debugPrint(response)
                }

                /**TRACK PROGRESS OF UPLOAD**/
                upload.uploadProgress { progress in
                    print(progress.fractionCompleted) // NEVER REACHES 1.0

                    var progress = progress.fractionCompleted


                }
                /***/


            case .failure(let encodingError):
                print(encodingError)
            }
        }
    )

Консоль

 0.041737145652041
 0.521714320650513
 0.772137194562759

1 Ответ

0 голосов
/ 04 сентября 2018

Вам просто нужно изменить пост

upload.uploadProgress { progress in
                print(progress.fractionCompleted) // NEVER REACHES 1.0

с

  upload.responseJSON { response in
            debugPrint(response)
        }  

Это правильное использование:

Alamofire.upload(
        multipartFormData: { multipartFormData in
            for(key, value) in sendParamters{
                multipartFormData.append((value.data(using: .utf8)!), withName: key)
            }

            for fileURL in arrayURLToUpload{
                print("fileURL: \(fileURL)")
                multipartFormData.append(fileURL, withName: "file[]")
            }
    },
        to: UPLOAD_URL,
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):

             /**TRACK PROGRESS OF UPLOAD**/
                upload.uploadProgress { progress in
                    print(progress.fractionCompleted)
                }
                /***/

                upload.responseJSON { response in
                    debugPrint(response)
                }

            case .failure(let encodingError):
                print(encodingError)
            }
        }
    )
...