简体   繁体   English

从图库中拍摄照片并将图像上传到服务器swift 4

[英]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). 我是新手,尝试过许多博客文章和github,以从库中获取图像并将其上传到服务器(php服务器端)。 can you please write the code which takes photo from photo library and upload it to server using alamofire and any other method. 您能否编写从照片库中获取照片并将其上传到使用alamofire和其他任何方法的服务器的代码?

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. 尝试这个。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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