Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Image is not uploading in base64 format using Alamofire and swift

I am trying to upload image in base64string format. Here i am uploading images with some parameters using alamofire and swift. But my image is not uploading to the server. Please check my code and let me know where i am doing wrong. My code is:

func postRegistrationPlayerProfile(urlExtension: String, callback: @escaping(Bool,String?) -> Void,parameters:[String:Any]) -> Void {

      let fullURL = URL(string: urlExtension)!
          let manager = Alamofire.SessionManager.default
          manager.session.configuration.timeoutIntervalForRequest = TimeInterval(Common.sharedInstance().REQUEST_TIME_OUT)

          manager.upload(multipartFormData: { (multipartFormData) in
              for (key, value) in parameters {
                  multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
              }
          }, usingThreshold: UInt64.init(), to: fullURL, method: .post) { (result) in
              switch result {
              case .success(let upload, _, _):
                  upload.responseJSON { (response : DataResponse<Any>) in
                      let responseDataString = Common.sharedInstance().getJSONStringFromData(data: response.data! as NSData)
                      print(responseDataString)
                      if let result = response.result.value {
                          let dictionary = result as! NSDictionary
                          let status = dictionary["status"] as! String
                          let message = dictionary["message"] as? String
                          if status == "success"{
                              callback(true,message)
                              return
                          }
                          else{
                              callback(false,message)
                              return
                          }

                      }
                      else{
                          callback(false,Common.sharedInstance().FAILED_BANNERIMG_UPLOAD)
                          return
                      }
                  }
              case .failure(let encodingError):
                  print("encodingError: \(encodingError)")
                  callback(false,Common.sharedInstance().FAILED_BANNERIMG_UPLOAD)
              }
          }
      }

my parameters are:

        paramters.updateValue(phone!, forKey: "phone")
        paramters.updateValue(state!, forKey: "state")
        paramters.updateValue(city!, forKey: "city")
        paramters.updateValue(zip!, forKey: "postcode")
        paramters.updateValue(travel, forKey: "travel_distance")
        paramters.updateValue(base64ImageString!, forKey: "profile_image")
        paramters.updateValue(country!, forKey: "country")

I am converting my image to base64 string like:

  if let selectedImage = chooseProfileImage.image{
            if let data = selectedImage.jpegData(compressionQuality: 1){

                base64ImageString = data.base64EncodedString(options: .lineLength64Characters)

            }
        }

like image 631
Tapan Raut Avatar asked May 25 '20 08:05

Tapan Raut


1 Answers

Adding

url('data:image/jpeg;base64,)

to my Base64 converted string worked for me:

if let selectedImage = chooseProfileImage.image{
           if let data = selectedImage.jpegData(compressionQuality: 1){
               let imageString = selectedImage.jpegData(compressionQuality: 1.0)?.base64EncodedString() ?? ""
           base64ImageString = "url('data:image/jpeg;base64,\(imageString)')"
               profileData = data
           }
       }
like image 176
Tapan Raut Avatar answered Nov 15 '22 07:11

Tapan Raut