后台的接口数据如下:
接口名称 上传头像
接口地址 /data/upload
传入参数 MultipartFile file, String phoneId, Integer phoneType
传出结果 //0 ok, 1 空文件, 2 文件写失败
分析: 接口需要传三个参数,file为图片的二进制文件,String类型的phoneId,Integer类型的phoneType
Alamofire上传图片,用于传递参数的类是multipartFormData,利用multipartFormData.appendBodyPart添加参数即可,内部会自动出来参数
private func upload(uploadImage: UIImage,address: String,scale: Double) {
Alamofire.upload(.POST, address, multipartFormData: { (multipartFormData) in
let data = UIImageJPEGRepresentation(uploadImage, scale)
let imageName = String(NSDate()) + ".png"
//multipartFormData.appendBodyPart(data: ,name: ,fileName: ,mimeType: )这里把图片转为二进制,作为第一个参数
multipartFormData.appendBodyPart(data: data!, name: "file", fileName: imageName, mimeType: "image/png")
//把剩下的两个参数作为字典,利用 multipartFormData.appendBodyPart(data: name: )添加参数,
//因为这个方法的第一个参数接收的是NSData类型,所以要利用 NSUTF8StringEncoding 把字符串转为NSData
let param = ["phoneId" : HCUserModel.sharedInstance.phoneId!, "phoneType" : "1"]
//遍历字典
for (key, value) in param {
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
}
}) { (encodingResult) in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON(completionHandler: { (response) in
if let myJson = response.result.value {
if myJson as! NSObject == 0 {
print("上传成功")
}else {
print("上传失败")
}
}
})
case .Failure(let error):
print(error)
}
}
}