Ios alamofire multipartformdata使用urlrequest
我想使用Alamo fire多部分表单数据使用请求,例如,我使用upload APIIos 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
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);
}
}
}
希望这能奏效
谢谢谢谢:)但是,我想用参数来查询字符串,而不是多格式数据