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
Bit Field Larger Than 64 Shifts in Swift
Enabling Gestures in Realitykit
Assemble a List of Users with Geofire/Firebase
Compiler Cannot Infer Return Type
Parsing Fetched JSON to Dictionary in Swift 3
How to Simplify Swift Enum Custom Init
Custom Intialiser on Primitive Types for JSONdecoder
Swiftui Inputaccesoryview Implementation
Realitykit - Load Another Scene from the Same Reality Composer Project
How to Get Distinct Results from a Single Field in Core Data (Swift 4)
Combining Watchconnectivity and Complications
Drawing a Gradient Color in an Arc with a Rounded Edge
Firebase Retrieve Image from Url Save with Firebase Database
iOS Charts Library - How to Handle X-Axis Duplicate Values