php - 想在swift 4中通过php api上传图片

标签 php ios swift image-uploading

我想将图像作为链接或任何方法发送到 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 将图像发送到此以存储到服务器文件夹中

最佳答案

使用这个 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)
                }
        }
        )
    }

关于php - 想在swift 4中通过php api上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168497/

相关文章:

php - 如何在 PHP 中为透明的 PNG 文件着色?

php - 为什么我的 php 文件没有返回任何内容?

ios - @Observable 模型更改未反射(reflect)在 View 中

ios - 如何使用 viewForSupplementaryElementOfKind 显示 UICollectionView 的特定单元格 - swift

ios - 类型 'ViewController' 不符合协议(protocol) 'FBSDKLoginButtonDelegate'

ios - Google 登录集成问题

swift - 确定 WKInterfaceLabel 的字体大小和粗细 - 等宽字体需要

php - onclick 事件在 echo 中不起作用

php - 哪些标记可以在 PDO 准备语句中参数化?

ios - App Thinning - Bitcode 的例子?