Как отправлять данные вместе с изображением с помощью Alamofire multipartFormData в swift 5

#ios #alamofire #multipartform-data #swift5 #xcode11

#iOS #alamofire #multipartform-данные #swift5 #xcode11

Вопрос:

Я пытаюсь обновить детали профиля с помощью Alamofire multipartFormData. Ниже приведен скриншот Postman, показывающий, каким должен быть запрос.

Скриншот запроса Postman

Ниже приведено то, что я пытаюсь сделать, используя multipartFormData в Alamofire.

     func Post(imageOrVideo : UIImage?){

let headers: HTTPHeaders = [
    "Content-type": "multipart/form-data"
]

    AF.upload(
        multipartFormData: { multipartFormData in
            multipartFormData.append(imageOrVideo!.jpegData(compressionQuality: 0.5)!, withName: "upload_data" , fileName: "landing.jpeg", mimeType: "image/jpeg")
            multipartFormData.append(data: Data, withName: self.Pharmacy_name.text!)
            
    },
        to: "url", method: .post , headers: headers)
        .response { resp in
            print("response is:" , resp)

    }
  

Для того, чтобы вызов API возвращал «true», все вышеуказанные данные должны присутствовать в запросе. Я просто не понимаю, как добавить значения текстового поля в multipartFormData.append.

Я новичок в разработке iOS, поэтому, пожалуйста, потерпите меня. Любая помощь, которую я мог бы получить, очень ценится!

Ответ №1:

Исправлено! Ниже приведен код.

     func Post(imageOrVideo : UIImage?){

let headers: HTTPHeaders = [
    /* "Authorization": "your_access_token",  in case you need authorization header */
    "Content-Type": "multipart/form-data"
]

    AF.upload(
        multipartFormData: { multipartFormData in
            multipartFormData.append(imageOrVideo!.jpegData(compressionQuality: 0.5)!, withName: "upload_data" , fileName: "landing.jpeg", mimeType: "image/jpeg")
            multipartFormData.append(self.Pharmacy_name.text!.data(using: .utf8, allowLossyConversion: false)!, withName: "name")
            multipartFormData.append(self.Address_line1.text!.data(using: .utf8, allowLossyConversion: false)!, withName: "address_line_1")
            multipartFormData.append(self.Address_line2.text!.data(using: .utf8, allowLossyConversion: false)!, withName: "address_line_2")
            multipartFormData.append(self.Start_time.text!.data(using: .utf8, allowLossyConversion: false)!, withName: "open_at")
            multipartFormData.append(self.close_time.text!.data(using: .utf8, allowLossyConversion: false)!, withName: "close_at")
            multipartFormData.append(self.contact_number.text!.data(using: .utf8, allowLossyConversion: false)!, withName: "phone_no")
            multipartFormData.append("0.00".data(using: .utf8, allowLossyConversion: false)!, withName: "longitude")
            multipartFormData.append("0.00".data(using: .utf8, allowLossyConversion: false)!, withName: "latitude")
            multipartFormData.append("1".data(using: .utf8, allowLossyConversion: false)!, withName: "id")
            multipartFormData.append(self.token.data(using: .utf8, allowLossyConversion: false)!, withName: "api_token")


    },
        to: "url", method: .post , headers: headers)
        .response { resp in
            print("response is:" , resp)

    }
  

Надеюсь, это кому-то поможет.