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