Abhiram
Abhiram

Reputation: 247

Failing While uploading Images By Almofire

enter image description here

I am uploading images in multi-part form data but was not succeed it throwing an error. but I'm trying in postman it succeeded .i don't know where I have done a mistake.i have attached postman screenshot for uploading response.please check it and I'm Using Almofire for responce.

 func uploadimages() {

    let url = ServiceUrl.Base + "ShopRegistration/ShopPicture"
    print("URL  === > \(url)")
    print(self.imgData?.count)
    var token :String = ""
    if let strToken = Preference.GetString(key: UserDefaultsKey.Token) {
        token = strToken
    }
    var RequestDist : NSDictionary = NSDictionary()
    RequestDist = ["ShopId": "\(Preference.GetInteger(key: UserDefaultsKey.ShopID))"]
        as NSDictionary;
    print(RequestDist)
    if(Reachability.isConnectedToNetwork())
    {
        Alamofire.upload(multipartFormData: { (multipartFormData) in
            if self.imgData != nil && (self.imgData?.count)! > 0 {
                for dataImg in (self.imgData)! {
                    //shopImage
                    multipartFormData.append(dataImg, withName: "shopImage", fileName: "uploaded_file.jpeg", mimeType: "image/jpeg")
                }
            }
            for (key, value) in  RequestDist {
                multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key as! String )
            }
            print("Request ===>>> /n \(multipartFormData.contentType)")
        }, to:url,headers :["authToken" : token])
        { (result) in
            switch result {
            case .success(let upload, _, _):
                upload.uploadProgress(closure: { (Progress) in
                    print("\n")
                    print(Progress.fractionCompleted)
                })
                upload.responseJSON { response in
                  if(response.result.isSuccess){
                    print("\n\n")
                    print("\(response.result.isSuccess)")
                    print("\n\n")
                    print(response.result)
                    print("\n\n")
                    print(response)
                    print("\n\n")
appDelegate.window?.rootViewController?.view.makeToast(message: "Images added sucessfully")
let datastring = NSString(data:response.data!, encoding:String.Encoding.utf8.rawValue) as String?
print("Response:::>>>> \(String(describing: datastring))")


if let intShopID : Int = Preference.GetInteger(key: UserDefaultsKey.ShopID) {
                            self.getShopImagesCall(intshopID: intShopID)
                        }

                    }else{
                        appDelegate.window?.rootViewController?.view.makeToast(message: AppMessage.getErrorInResponse)
                    }
                }
            case .failure(let encodingError):
                appDelegate.window?.rootViewController?.view.makeToast(message: AppMessage.getErrorInResponse)
                break
            }
        }
    }
}

Upvotes: 0

Views: 38

Answers (1)

Neel Bhasin
Neel Bhasin

Reputation: 759

for JPEG image on network use let imageData = UIImageJPEGRepresentation(img, 0.5) and at body multipartFormData.append(dataImg, withName: "shopImage", fileName: "uploaded_file.jpeg", mimeType: "image/jpeg").

for PNG image let image = UIImagePNGRepresentation(pickedImage) and at body multipartFormData.append(dataImg, withName: "shopImage", fileName: "uploaded_file.png", mimeType: "image/png").

Upvotes: 1

Related Questions