ios - 使用 alamofire 上传带参数的图像
问题描述
我正在尝试使用 alamofire 将图像连同参数一起发送到服务器,但我不知道天气是否正确。我没有得到响应,收到类似的错误
{
errors = {
avatar = (
"The avatar must be an image.",
"The avatar must be a file of type: jpeg, jpg, png."
);
city = (
"The city may not be greater than 50 characters."
);
state = (
"The state may not be greater than 50 characters."
);
};
message = "Invalid input.";
status = 400;
success = 0;
}
如果有人帮助我,那就太好了。预先感谢
let imageobj = img.image!
let data = imageobj.pngData()
let acce:String = UserDefaults.standard.string(forKey: "access")!
print(acce)
let headers:HTTPHeaders = ["Authorization":"Bearer \(acce)"]
postParameters = ["name":username,"password":pass,"password_confirmation":confirmpass,"city":newcity,"state":newstate,"address":addre]
print(postParameters)
let userData:Data = try! JSONSerialization.data(withJSONObject: postParameters)
Alamofire.upload(multipartFormData: { (multiFoormData) in
multiFoormData.append(userData, withName: "name")
multiFoormData.append(userData, withName: "password")
multiFoormData.append(userData, withName: "password_confirmation")
multiFoormData.append(userData, withName: "city")
multiFoormData.append(userData, withName: "state")
multiFoormData.append(userData, withName: "address")
multiFoormData.append(userData, withName: "avatar", mimeType: "image/png")
}, to: Constants.Userdetailsapi,method:.post,
headers:headers,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
print(response)
}
case .failure(let encodingError):
print(encodingError)
}
})
解决方案
if let img = info[UIImagePickerControllerOriginalImage] as? UIImage{
self.imgProfileImage.image = info[UIImagePickerControllerOriginalImage] as? UIImage
let imgData = UIImageJPEGRepresentation(img, 0.5)!
let parameters = ["service_type":"que_update_profile",
"user_id":UserDefaults.standard.string(forKey: "user_id") ?? "",
"que_m_firstname":self.txtFirstName.text!,
"que_m_lastname":self.txtLastName.text!,
"que_m_birthdate":self.lblDateofBirth.text!,
"que_m_gender":"\(self.selectedGender)",
"que_m_phone":self.txtPhone.text!,
"que_m_address":self.txtAddress.text!] as [String : Any] //Optional for extra parameter
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imgData, withName: "profile_imgname",fileName: "ProfilePic_\(UserDefaults.standard.string(forKey: "user_id") ?? "").jpg", mimeType: "image/jpg")
for (key, value) in parameters {
multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
} //Optional for extra parameters
},
to:"Server URL Here.")
{ (result) in
switch result {
case .success(let upload, _, _):
upload.uploadProgress(closure: { (progress) in
print("Upload Progress: \(progress.fractionCompleted)")
})
upload.responseJSON { response in
print(response.result.value)
}
case .failure(let encodingError):
print(encodingError)
}
}
}
self.dismiss(animated: true, completion: nil)
推荐阅读
- javascript - .getTime() 返回奇怪的结果
- c# - 为什么我们需要继续声明基本包,例如在 .Net Core 中使用系统
- spring-boot - 在 Spring Boot 中重定向到 html 文件
- javascript - 单个网格上的多种材质会导致 z-index / 裁剪问题
- javascript - .prependTo() 和 .insertAfter() 没有 jQuery
- flutter - 为什么要在 Flutter 路由字符串中传递参数?
- php - 如何在 Mac 上签名 xdebug.so 或关闭签名验证
- maven - 如何替换 MANIFEST.MF 中的 Spring Boot 1.4/1.5 主类来打包和使用我的自定义 JarLauncher 类
- javascript - 生成具有给定变量的随机字符串
- javascript - rxjs6 不会在管道中的 promise 内传递值