Always use SDWebImage because it handles all the things like cache.
For Single Image Selection
- use SDWebImage for showing/downloading and uploading url-
For Showing Image Example: self.img_profile.sd_setImage(with: URL(string:
self.orgDetails.logo!),placeholderImage: UIImage.init(named: "default_icon_iPhone_Logo.png"), completed: nil)
For uploading image:
Alamofire.upload(multipartFormData: { (multipartFormData) in
if let data = imageData{
let keyName = key
//mark:Random number generator for image different Name because there may be problem from backend which will replace your image if image name is same.
let uuid = UUID().uuidString
let imageName = ("image1" + uuid + ".png")
multipartFormData.append(data, withName: keyName, fileName: imageName, mimeType: "image/png")
}
for (key, value) in parameters {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
}
},{ (result) in
switch result{
case .success(let upload, _, _):
upload.response { response in
print("Request: \(response.request)")
print("Response: \(response.response)")
print("Error: \(response.error)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
do {
let data = try self.decoder.decode(OrganizationDetailModel.self, from: response.data ?? Data())
print("Success")
if data.success == true{
completion(data)
}
KVNProgress.dismiss()
} catch let error {
KVNProgress.dismiss()
self.handleError(data: response, error: error)
}
print("Data: \(utf8Text)")
// if data.success == true{
//}
}
}
case .failure(let error):
print("Error in upload: \(error.localizedDescription)")
//onError?(error)
}
}
For Multiple Image Selection
- use YangShinMan Third party lib
- And upload like same above only changes is keep imageData in array.
Comments
Post a Comment