Alamorfire multipart загружает только одно изображение ios - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь загрузить несколько изображений. Эта функция позволяет мне загружать только одно изображение, если я добавлю еще одно, на консоли отображается эта ошибка: AILURE: responseSerializationFailed (причина: Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength) Я пробовал все, но похоже, ничего не работает. Мой код:

static func register(completion: @escaping SuccessCompletionHandler)
{

    let parameters: [String: Any] =
        [
            "firstName": NewUser.parameters.firstName,
            "lastName": NewUser.parameters.lastName ,
            "email": NewUser.parameters.email,
            "car_type": NewUser.parameters.carType,
            "userPhone": NewUser.parameters.phoneNumber
    ]

    Alamofire.upload(multipartFormData: { multipartFormData in

        parameters.forEach { (key, value) in
            let stringValue = "\(value)"

            multipartFormData.append(stringValue.data(using: String.Encoding.utf8) ?? Data(), withName: key)
        }

        if let identity1 = NewUser.parameters.identity1
        {
            multipartFormData.append(identity1, withName: "identity1", fileName: "identity1.jpeg", mimeType: "image/jpeg")
        }
        if let identity2 = NewUser.parameters.identity2
        {
            multipartFormData.append(identity2, withName: "identity2", fileName: "identity2.jpeg", mimeType: "image/jpeg")
        }
        if let car1 = NewUser.parameters.car1
        {
            multipartFormData.append(car1, withName: "car1", fileName: "car1.jpeg", mimeType: "image/jpeg")
        }
        if let car2 = NewUser.parameters.car2
        {
            multipartFormData.append(car2, withName: "car2", fileName: "car2.jpeg", mimeType: "image/jpeg")
        }
        if let car3 = NewUser.parameters.car3
        {
            multipartFormData.append(car3, withName: "car3", fileName: "car3.jpeg", mimeType: "image/jpeg")
        }
        if let licence1 = NewUser.parameters.licence1
        {
            multipartFormData.append(licence1, withName: "licence1", fileName: "licence1.jpeg", mimeType: "image/jpeg")
        }
        if let licence2 = NewUser.parameters.licence2
        {
            multipartFormData.append(licence2, withName: "licence2", fileName: "licence2.jpeg", mimeType: "image/jpeg")
        }

    }, to: BASE_URL+"driver/auth/register", method: .post, encodingCompletion: { result in
        showCustomLoader(message: "Registering".localizedString)
        switch result
        {

        case .success(let request, _,  _):

            request.responseJSON(completionHandler: { (response) in

                print(response)
                print(response.result)

                hideCustomLoader()

                guard let userData = response.data else
                {
                    GRP.showToast(failure: true, message: "RegistrationFailed".localizedString)
                    completion(false)
                    return
                }

                guard
                    let newUserContainer = try? JSONDecoder().decode(SuccessfulResponseModel<[AuthModel]>.self, from: userData),
                    let authenticatedUserArray = newUserContainer.response, !authenticatedUserArray.isEmpty,
                    let authenticatedUser = authenticatedUserArray.first,
                    let success = newUserContainer.success, success == true
                    else
                {
                    guard
                        let errorResponse = try? JSONDecoder().decode(ErrorModel.self, from: userData),
                        let errorMesssage = errorResponse.message else
                    {
                        GRP.showToast(failure: true, message: "RegistrationFailed".localizedString)
                        completion(false)
                        return
                    }
                    GRP.showToast(failure: true, message: errorMesssage)
                    return
                }
                self.authenticatedUser = authenticatedUser
                GRP.showToast(message: "RegistrationSucceeded".localizedString)
                completion(true)
            })

        case .failure:
            hideCustomLoader()

            GRP.showToast(failure: true, message: "RegistrationFailed".localizedString)
            completion(false)
            break
        }
    })

}

1 Ответ

0 голосов
/ 19 июня 2020

насколько я знаю, вы можете отправлять только одно изображение за одну загрузку. поэтому я бы создал массив изображений, а затем сделал бы для l oop, чтобы перебрать этот массив и начать для каждого изображения отдельную загрузку.

...