Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Ios alamofire multipartformdata使用urlrequest_Ios_Swift_Upload_Alamofire_Patch - Fatal编程技术网

Ios alamofire multipartformdata使用urlrequest

Ios alamofire multipartformdata使用urlrequest,ios,swift,upload,alamofire,patch,Ios,Swift,Upload,Alamofire,Patch,我想使用Alamo fire多部分表单数据使用请求,例如,我使用upload API let profile = self.photoView.imageView?.image let parameters : [String:String] = [ "homePageUrl": webURLField.text!, "nickName": nickNameField.text!, "selfIntro": introField.text

我想使用Alamo fire多部分表单数据使用请求,例如,我使用upload API

let profile = self.photoView.imageView?.image

    let parameters : [String:String] = [
        "homePageUrl": webURLField.text!,
        "nickName": nickNameField.text!,
        "selfIntro": introField.text!,
        ]

    let uri = Constants.APIURL.changeProfile
    let fileName = "\(nickNameField.text!).jpg"

    Alamofire.upload(multipartFormData: { (multipartFormData) in
         if let imageData = UIImageJPEGRepresentation(profile!, 1.0) {
            multipartFormData.append(imageData, withName: "profile", fileName: fileName, mimeType: "image/jpg")
        }

        for ( key, value ) in parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: key)
        }

    }, usingThreshold: UInt64.init(), to: uri, method: .patch, headers: Constants.VyrlAPIConstants.getHeader(), encodingCompletion:
        {
            encodingResult in
            switch encodingResult {
            case .success(let upload, _, _):

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

                upload.responseString { response in
                    if ((response.response?.statusCode)! == 200){
                        self.navigationController?.popViewController(animated: true)                            
                    }
                }
            case .failure(let encodingError):
                print(encodingError.localizedDescription)
            }
    })
此代码从服务器发送400响应 日志是。

补丁'http://blablabla.com:8080/users/profile“:

内容类型:多部分/表单数据; 边界=alamofire.boundary.53A2E440BAD1FAND X设备:ios X-APP-Version:1.0.0接受语言:ko kr 400 'http://blablabla.com:8080/users/profile[0.0976 s]: X-Application-Context:应用程序:开发连接:关闭 传输编码:身份日期:2017年7月13日星期四01:57:41 GMT

要接收的服务器 http://blablabla.com:8080/users/profile?nickName=abcd&selfIntro=hi%20my%20name%20is.. 服务器日志为。。(成功200码)

curl-X补丁--标题“内容类型:多部分/表单数据”--标题 '接受:/'--标题'X-APP-Version:1.0.0'--标题'X-Device:ios' --标题'Accept Language:ko KR'{“type”:“formData”}'http://blablabla.com:8080/users/profile?nickName=abcd&selfIntro=hi%20my%20name%20is..'

当然,我想附上?nicName=abcd 使用多端口数据


如何使用alamofire代码

请试试这个,这对我上传图像有用

 var parameters = [String:AnyObject]()


    let profile = self.photoView.imageView?.image

    parameters = ["homePageUrl": webURLField.text as AnyObject,
                  "nickName": nickNameField.text as AnyObject,
                  "selfIntro": introField.text as AnyObject]


    let imgData = UIImageJPEGRepresentation(profile!, 0.2)!

    let uri = Constants.APIURL.changeProfile
    let fileName = "\(nickNameField.text!).jpg"


    Alamofire.upload(multipartFormData:{ multipartFormData in
        multipartFormData.append(imgData, withName: "profile",fileName: fileName, mimeType: "image/jpg")
        for (key, value) in parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        }
    },
                     usingThreshold:UInt64.init(),
                     to:uri,
                     method:.post,
                     headers:Constants.VyrlAPIConstants.getHeader(),
                     encodingCompletion: { encodingResult in
                        switch encodingResult {
                        case .success(let upload, _, _):
                            upload.responseJSON { response in
                                 print(response.result.value)
                            }
                        case .failure(let encodingError):
                            print(encodingError)
                        }
    })

如果不起作用,则使用如下参数创建url

 Alamofire.upload(multipartFormData:{ multipartFormData in
        multipartFormData.append(imgData, withName: "profile",fileName: fileName, mimeType: "image/jpg")},
                     usingThreshold:UInt64.init(),
                     to:uri + "?" +nickNameField.text! +"?"+ webURLField.text!+"?"+introField.text!,
                     method:.post,
                     headers:Constants.VyrlAPIConstants.getHeader(),
                     encodingCompletion: { encodingResult in
                        switch encodingResult {
                        case .success(let upload, _, _):
                            upload.responseJSON { response in
                                 print(response.result.value)
                            }
                        case .failure(let encodingError):
                            print(encodingError)
                        }
    })
斯威夫特3号阿拉莫菲尔4号

这是一个演示代码,供参考

Alamofire.upload(multipartFormData: { (multipartFormData) in
        multipartFormData.append(UIImageJPEGRepresentation(self.Imgprofile.image!, 1)!, withName: "Prescription", fileName: "Profile_Image.jpeg", mimeType: "image/jpeg")
    }, to:" Your URL here ")
    { (result) in
        switch result {
        case .success(let upload, _, _):
            print(result)

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

            upload.responseJSON { response in
                //print response.result
                print(response);
            }

        case .failure(let encodingError):
            print(encodingError);
        }
    }
}
希望这能奏效

谢谢

谢谢:)但是,我想用参数来查询字符串,而不是多格式数据