简体   繁体   中英

take photo from library and upload image to server swift 4

I am new to swift and tried many blog posts and github to take image from library and upload it to server(php server side). can you please write the code which takes photo from photo library and upload it to server using alamofire and any other method.

below is the code i was trying to upload photo from photolibrary

 @IBAction func upload(_ sender: Any) {
        let picker = UIImagePickerController()
        picker.delegate = self
        picker.sourceType = UIImagePickerControllerSourceType.photoLibrary
        picker.allowsEditing = false
        self.present(picker, animated: true) {

        }

    }
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

     if let originalImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

            imageView.image = originalImage
        let image = UIImage.init(named: "\(originalImage)")
        let imgData = UIImageJPEGRepresentation(image!, 0.2)!
        let parameters = ["user":"Sol", "password":"secret1234"]


        Alamofire.upload(multipartFormData: { multipartFormData in
            multipartFormData.append(imgData, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
            for (key, value) in parameters {
                multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
            } //Optional for extra parameters
        },
                         to:"website")
        { (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)
            }
        }
        }
 self.dismiss(animated: true, completion: nil)
    }
}
@IBAction func upload(_ sender: Any) {
        let picker = UIImagePickerController()
        picker.delegate = self
        picker.sourceType = UIImagePickerControllerSourceType.photoLibrary
        picker.allowsEditing = false
        self.present(picker, animated: true) {

        }

    }
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        if let originalImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

            imageView.image = originalImage
            if let imgData = UIImageJPEGRepresentation(originalImage, 0.2) {
                let parameters = ["user":"Sol", "password":"secret1234"]
                upload(params: parameters, imageData: imgData)
            }
        }
        picker.dismiss(animated: true, completion: nil)
    }

    func upload(params : [String: Any], imageData: Data) {

        if let url = URL(string: "EnterUrl") {
            Alamofire.upload(
                multipartFormData: { (multipartdata) in

                    multipartdata.append(
                        imageData,
                        withName: "fileset",
                        fileName: String("\(Date().timeIntervalSince1970).jpg"),
                        mimeType: "image/jpg"
                    )

                    for (key,value) in params {
                        if let data = value as? String,
                            let data1 = data.data(using: .utf8)
                        {
                            multipartdata.append(
                                data1,
                                withName: key
                            )
                        }
                    }
            },
                to: url,
                method: .post,
                headers: nil,
                encodingCompletion: { (result) in
                    switch result {
                    case .success(let upload, _, _):
                        upload.responseJSON(completionHandler: { (response) in
                            if let err = response.error {
                                    print(err.localizedDescription)
                            } else {
                                print(response.result.value ?? "No data")

                            }
                        })
                    case .failure(let error):
                        print(error.localizedDescription)
                    }
                }
            )
        }

    }
}

try this.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM