I have created a function for Multipart Upload using Alamofire.
Call this function passing Web service URL , Parameters and your image.
func WSPostAPIMultiPart(_ aStrULR:String,
param: [String: Any],
image : UIImage?,
controller: UIViewController,
successBlock: @escaping (_ response:[String : Any]?) -> Void,
failureBlock: @escaping (_ error: Error?) -> Void) {
var dictHeaders : HTTPHeaders = [String : String]()
if (Alamofire.NetworkReachabilityManager()?.isReachable)!{
Alamofire.upload(
multipartFormData: { MultipartFormData in
let JSONData: Data? = try? JSONSerialization.data(withJSONObject: param, options: .prettyPrinted)
MultipartFormData.append(JSONData!, withName: "json")
if image != nil{
MultipartFormData.append(UIImageJPEGRepresentation(image!, 0.5)!, withName: "profile_image",fileName: "image.jpeg", mimeType: "image/jpeg")
// withName : You will pass the key name required by your server
}
}, to: aStrULR ,method : .post , headers : dictHeaders) { (result) in
switch result {
case .success(let upload, _, _):
upload.responseJSON { response in
if let value = response.result.value {
let dictResponse = JSON(value).dictionaryObject
successBlock(dictResponse)
}
}
case .failure(let error):
failureBlock(error)
}
}
}else{
print("NO INTERNET CONNECTIVITY")
}
}
For Video: Just pass videoURL one extra parameter and append as :
MultipartFormData.append(videoUrl, withName: "profileVideo", fileName: "video.mp4", mimeType: "video/mp4")
Hope it helps :)