Вы можете использовать этот метод, как он работал для меня:

ичок в iOS и использую Alamofire для загрузки изображений. Код, который я написал, выглядит следующим образом:

let image = imageView.image
        let imgData = UIImageJPEGRepresentation(image!, 0.2)!
        let headers: HTTPHeaders = [
            "x-access-token": "######",
            "Accept": "application/json"
        ]
        let parameters = ["profile_picture": "kinza"]
        let url = try! URLRequest(url: URL(string:"######")!, method: .post, headers: headers)

        Alamofire.upload(multipartFormData: { multipartFormData in
            multipartFormData.append(imgData, withName: "profile_picture",fileName: "kinza.jpg", mimeType: "image/jpg")
            for (key, value) in parameters {
                multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            }
        },
                         with: url)
        { (result) in
            switch result {
            case .success(let upload, _, _):

                upload.uploadProgress(closure: { (progress) in
                    print("Upload Progress: \(progress.fractionCompleted)")
                })

                upload.responseJSON { response in
                    print(response.result.value)
                }

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

Когда я запускаю этот код, я получаю следующий журнал:

2017-11-07 11:03:21.595826+0500 TestApiProject[2457:51089] [] nw_socket_get_input_frames recvmsg(fd 6, 4096 bytes): [54] Connection reset by peer
2017-11-07 11:03:21.596094+0500 TestApiProject[2457:51089] TIC Read Status [1:0x6040003612c0]: 1:54
2017-11-07 11:03:21.596495+0500 TestApiProject[2457:51089] [] nw_socket_output_finished shutdown(6, SHUT_WR): [57] Socket is not connected
2017-11-07 11:03:21.597203+0500 TestApiProject[2457:51089] Task <9A25E63E-EC42-419C-A0B7-02998177EDCA>.<1> HTTP load failed (error code: -1005 [4:-4])
2017-11-07 11:03:21.597681+0500 TestApiProject[2457:51091] Task <9A25E63E-EC42-419C-A0B7-02998177EDCA>.<1> finished with error - code: -1005
Upload Progress: 1.0
nil

Он искал, но не нашел ничего специфического для «error code -1005». Как я могу это решить? Я что-то пропустил?

У меня есть определенные вопросы по этому поводу:

Если загрузка http не удалась, то как управление перешло к успешному блоку запроса Alamofire?Значение response.result.value равно нулю. Что-то не так с моей стороны или со стороны сервера?Нужно ли добавить еще атрибуты в мой info.plist? Вот как это сейчас.

Любая помощь приветствуется.

 Salman Ghumsani07 нояб. 2017 г., 07:35
Вот почему это комментарий, а не ответ. Я думал, что вы можете получить некоторую ссылку оттуда.
 kinza07 нояб. 2017 г., 07:33
@SalmanGhumsani Как подход, использованный в вашем ответе, отличается от того, который я использую?
 Salman Ghumsani07 нояб. 2017 г., 07:25

Ответы на вопрос(2)

Попробуй это..

let image = imageView.image
        let imgData = UIImageJPEGRepresentation(image, 0.2)!

        let parameters = ["profile_picture": "kinza"]

        Alamofire.upload(multipartFormData: { multipartFormData in
            multipartFormData.append(imgData, withName: "profile_picture",fileName: "kinza.jpg", mimeType: "image/jpg")
            for (key, value) in parameters {
                multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            }
        },to:"http://YOUR URL"){ (result) in

            switch result {
                case .success(let upload, _, _):

                    upload.uploadProgress(closure: { (progress) in
                        print("Upload Progress: \(progress.fractionCompleted)")
                    })

                    upload.responseJSON { response in
                        print(response.result.value!)
                    }

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

Это работает для меня ..

 kinza07 нояб. 2017 г., 07:32
Как включить заголовки в этот код? Я должен отправить значение в заголовке тоже.

fileprivate func p_uploadImage(_ image: UIImage) {

        let parameters = ["channelName" : "Your text param"]
        let fileData = UIImageJPEGRepresentation(image, 0.2)
        let URL2 = try! URLRequest(url: "Your URL", method: .post, headers: ["Authorization" : authKey!])

        Alamofire.upload(multipartFormData: { (multipartFormData) in

            multipartFormData.append(fileData!, withName: "upfile", fileName: "upfile", mimeType: "text/plain")


            for (key, value) in parameters {
                multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
            }
        }, with: URL2 , encodingCompletion: { (result) in

            switch result {
                case .success(let upload, _, _):
                    print("s")
                    upload.responseJSON {
                        response in
                        if let JSON = response.result.value as? [String : Any]{
                            let messageString = JSON["message"] as? String

                            }else {

                                let alertError = UIAlertController(title: "Alert", message: "Image upload error", preferredStyle: UIAlertControllerStyle.alert)
                                alertError.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil))
                                self.present(alertError, animated: true, completion: nil)
                            }

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

                    let alertError = UIAlertController(title: "Alert", message: "Image upload error", preferredStyle: UIAlertControllerStyle.alert)
                    alertError.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil))
                    self.present(alertError, animated: true, completion: nil)
                }
            }
        )
    }

Ваш ответ на вопрос