Upload Image with Alamofire

upload image to server using Alamofire

Try below code

 let image = UIImage.init(named: "myImage")
let imgData = UIImageJPEGRepresentation(image!, 0.2)!

let parameters = ["name": rname] //Optional for extra parameter

Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append(imgData, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
for (key, value) in parameters {
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
} //Optional for extra parameters
},
to:"mysite/upload.php")
{ (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)
}
}

how to upload image (Multipart) using Alamofire 5.0.0-beta.3 (Swift 5)

Please refer Below code.

public class func callsendImageAPI(param:[String: Any],arrImage:[UIImage],imageKey:String,URlName:String,controller:UIViewController, withblock:@escaping (_ response: AnyObject?)->Void){

let headers: HTTPHeaders
headers = ["Content-type": "multipart/form-data",
"Content-Disposition" : "form-data"]

AF.upload(multipartFormData: { (multipartFormData) in

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

for img in arrImage {
guard let imgData = img.jpegData(compressionQuality: 1) else { return }
multipartFormData.append(imgData, withName: imageKey, fileName: FuncationManager.getCurrentTimeStamp() + ".jpeg", mimeType: "image/jpeg")
}


},usingThreshold: UInt64.init(),
to: URL.init(string: URlName)!,
method: .post,
headers: headers).response{ response in

if((response.error != nil)){
do{
if let jsonData = response.data{
let parsedData = try JSONSerialization.jsonObject(with: jsonData) as! Dictionary<String, AnyObject>
print(parsedData)

let status = parsedData[Message.Status] as? NSInteger ?? 0

if (status == 1){
if let jsonArray = parsedData["data"] as? [[String: Any]] {
withblock(jsonArray as AnyObject)
}

}else if (status == 2){
print("error message")
}else{
print("error message")
}
}
}catch{
print("error message")
}
}else{
print(response.error!.localizedDescription)
}
}
}

Happy to help you :)

Swift 5 - Upload MultipartFormData Using Alamofire with Image from Gallery

Try this, i think this will help you.

    func imagupload(){
let periode = periodeField.text
let kode_wilayah = kodeWilayahField.text
let nama_petugas = namaPetugasField.text
let upload_file = myImageView.image

var parameters = [String:AnyObject]()
parameters = ["periode":periode,
"kode_wilayah":kode_wilayah,
"nama_petugas":nama_petugas,
"uploaded_file": upload_file] as [String : AnyObject]

let URL = "myURL"

requestWith(endUrl: URL, imageData: myImageView.image!.jpegData(compressionQuality: 1.0), parameters: parameters, onCompletion: { (json) in
print(json)

}) { (error) in
print(error)

}
}

func requestWith(endUrl: String, imagedata: Data?, parameters: [String : String], onCompletion: ((JSON?) -> Void)? = nil, onError: ((Error?) -> Void)? = nil){

let url = endUrl

let headers: HTTPHeaders = [

"Content-type": "multipart/form-data"
]

Alamofire.upload(multipartFormData: { (multipartFormData) in
for (key, value) in parameters {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
}

if let data = imagedata{
multipartFormData.append(data, withName: "imagename", fileName: "imagename.jpg", mimeType: "image/jpeg")
}

}, to:url,headers: headers)
{ (result) in
switch result{
case .success(let upload, _, _):
upload.responseJSON { response in
let json : JSON = JSON(response.result.value)
print(json)
if let err = response.error{
onError?(err)

return
}
onCompletion?(json)

}
case .failure(let error):
//print("Error in upload: \(error.localizedDescription)")
onError?(error)

}

}

}

only used imagupload function in whenever you use like,

self.imagupload()

How to upload pictures with Alamofire (post)?

You can upload images using multipart data, Use below code:

let manager = Alamofire.SessionManager.default
do{
manager.upload(multipartFormData: { (formData) in
if let fileData = fileData { // File data
formData.append(fileData, withName: "FILE_NAME", fileName: "simple.jpeg", mimeType: "image/jpeg")
}
}, to: "API_PATH", method: HTTPMethod.post, headers: nil, encodingCompletion: { encoding in
switch encoding{
case .success(let req, _, _):
req.uploadProgress(closure: { (prog) in
progress?(prog)
}).responseJSON { (resObj) in
switch resObj.result{
case .success:
if let resData = resObj.data{
do {
let res = try JSONSerialization.jsonObject(with: resData)
print(res) // Success
} catch let err{
print(err)
}
}
break
case .failure(let err):
print(err)
break
}
}
break
case .failure(let err):
print(err)
break
}
})
}catch let err{
print(err)
}


Related Topics



Leave a reply



Submit