Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用alamofire/mulipart发送图片_Swift_Xcode_Alamofire_Multipart - Fatal编程技术网

Swift 使用alamofire/mulipart发送图片

Swift 使用alamofire/mulipart发送图片,swift,xcode,alamofire,multipart,Swift,Xcode,Alamofire,Multipart,如何使用多部分发送图片?我测试了这段代码,但服务器说:对象引用没有设置为对象的实例。 问题在哪里?或者任何人都可以建议一个新的代码,我可以试试。。。 我花了三天的时间来研究它,我得到了同样的结果。 参数就是这两个ID和文件。 问题在哪里 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[String : Any]) { print("con

如何使用多部分发送图片?我测试了这段代码,但服务器说:对象引用没有设置为对象的实例。 问题在哪里?或者任何人都可以建议一个新的代码,我可以试试。。。 我花了三天的时间来研究它,我得到了同样的结果。 参数就是这两个ID和文件。 问题在哪里

  func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info:[String : Any]) {
    print("control")
    var tempImage:UIImage = info[UIImagePickerControllerOriginalImage] as! UIImage
    tempImage = resizeImage(image: tempImage, newWidth: 300)!

    let data = UIImageJPEGRepresentation(tempImage, 0.7)
    updateProfile(imageData: data)

}

  func updateProfile(imageData:Data?) {
        print(imageData)
        var parameters : [String:String] = [:]
        parameters["id"] = "2011"
        parameters["contactid"] = "2030"
    print(parameters)
        let url = "https://madyar.org/MessageAPI/PostFileMessage"
        print(url)

        Alamofire.upload(multipartFormData: { (multipartFormData) in
            for (key, value) in parameters {
                multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
            }

            if let data = imageData {
                multipartFormData.append(data, withName: "image_url", fileName: "image.jpeg", mimeType: "image/jpeg")
            }

        }, usingThreshold: UInt64.init(), to: url, method: .post) { (result) in
            switch result{
            case .success(let upload, _, _):
                upload.responseString { response in
                    print("Succesfully uploaded  = \(response)")
                    if let err = response.error{

                        print(err)
                        return
                    }

                }
            case .failure(let error):
                print("Error in upload: \(error.localizedDescription)")

            }
        }

}

使用此代码,它将正常工作。使用此选项,您还可以检查上载进度

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

        uploadImage(image: pickedImage!)

    }
    picker.dismiss(animated: true, completion: nil)
}

func uploadImage(image : UIImage){
    var parameters : [String:String] = [:]
    parameters["id"] = "2011"
    parameters["contactid"] = "2030"
    print(parameters)

    Alamofire.upload(multipartFormData: { (multipartFormData) in
        multipartFormData.append(UIImageJPEGRepresentation(image, 0.2)!, withName: "image_url", fileName: "image.jpeg", mimeType: "image/jpeg")
        for (key, value) in parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        }
    }, to:"https://madyar.org/MessageAPI/PostFileMessage")
    { (result) in
        switch result {
        case .success(let upload, _, _):

            upload.uploadProgress(closure: { (progress) in
                print(progress)
            })

            upload.responseJSON { response in
                print(response)
            }

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

您是否检查过可能存在的副本,这不是服务器端问题?此项目的android应用程序运行良好。我不认为这是服务器问题。图像的来源似乎是UIImagePicker。它可能无法工作,因为您没有先将映像保存到磁盘。