хочу загрузить изображение через php api в swift 4 - PullRequest
0 голосов
/ 04 мая 2018

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

 @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickerImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
        let extURL = info[UIImagePickerControllerImageURL] as! NSURL

        print("image url \(extURL)")
        let ext = extURL.lastPathComponent
        imageURL = ext!
            self.imgRef.contentMode = .scaleAspectFit
            self.imgRef.image = pickerImage  
    }
    picker.dismiss(animated: false, completion: nil)
}

как я могу получить изображение, отправленное на него через php api для хранения в папке сервера

1 Ответ

0 голосов
/ 04 мая 2018

Используйте этот Alamofire метод:

func hitMultipartForImage(_ params:Dictionary<String,String>,image:UIImage?,imageParamName : String?,unReachable:(() -> Void),handler:@escaping ((Dictionary<String,Any>?) -> Void)) {
        print_debug("Params:  \(params)")
        let BASE_URL = "http:" //Your end point
        var imageParam = "image"
        if imageParamName ?? "" != ""{
            imageParam = imageParamName!
        }

        Alamofire.upload(
            multipartFormData: { multipartFormData in
                for (key, value) in params {
                    if "appendURL" != key {
                        multipartFormData.append(value.data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: key)
                    }
                }
                if image != nil{
                    let imgData = UIImageJPEGRepresentation(image!, 0.5)
                    if imgData != nil {
                        print_debug("img data available")
                        multipartFormData.append(imgData!, withName: imageParam, fileName: "file.png", mimeType: "image/png")
                    }
                }
        },
            to: BASE_URL,
            encodingCompletion: { encodingResult in
                switch encodingResult {
                case .success(let upload, _, _):
                    upload.responseJSON { response in

                        switch response.result {
                        case .success:
                            if let jsonDict = response.result.value as? Dictionary<String,Any> {
                                print_debug("Json Response: \(jsonDict)") // serialized json response
                                handler(jsonDict)
                            }
                            else{
                                handler(nil)
                            }
                            if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
                                print("Server Response: \(utf8Text)") // original server data as UTF8 string
                            }
                            break
                        case .failure(let error):
                            handler(nil)
                            print_debug(error)
                            break
                        }
                    }
                case .failure(let encodingError):
                    print(encodingError)
                }
        }
        )
    }
...