Facing problem while uploading images with Alamofire multipart data

Viewed 372

I'm getting this message in console:

findWriterForTypeAndAlternateType:119: unsupported file format 'public.heic'

And getting empty JSON as response hence always showing Failed, Something went wrong

My code:

func alamofireMultipart2<T: Decodable>(urlString: String, body: [String: String], images: [(image: UIImage, param: String, fileName: String)], resultType: T.Type, completion: @escaping ([String: Any]?, String, String) -> Void) {

    print("Inside Alamofire multipart")
    guard let url = URL(string: urlString) else {
        
        print("Invalid URL: " + urlString)
        return
    }
    
    let header = ["Authorization" : "Bearer \(AppConfigs.accessToken)"]
    
    
    Alamofire.upload(
        multipartFormData: { multipartFormData in
            
            print("body:")
            body.forEach {
                key, value in
                print("key: \(key), value: \(value)")
                multipartFormData.append(Data(value.utf8), withName: key)
                return
            }
            
            images.forEach {
                (image, param, filename) in
                let imageData = image.jpegData(compressionQuality: 0.8)
                
                print("Image Size = \(imageData?.count.byteSize)")
                multipartFormData.append(imageData!, withName: param, fileName: filename, mimeType: "image/jpeg")
            }
    },
        
        to: url,
        headers: header,
        
        encodingCompletion: { encodingResult in
            
            switch encodingResult {
                
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    print("\n\nupload result, response: ")
                    print(response)
                    
                    print("Error: ")
                    print(response.error ?? "null")
                    guard let data = response.data else {
                        print("response.data is nil")
                        return
                    }
                    
                    
                    let serializedData = try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
                    
                    
                    guard let parsedData =  serializedData  else {
                        print("Could not parse json")
                        completion(nil, "Failed", "Something went wrong")
                        return
                    }
                    
                    let status = parsedData["status"] as? String ?? "Failed"
                    let message = parsedData["message"] as? String ?? "Something went wrong"
                    
                    if status == "OK" {
                        
                        print("Response parsed successfully! status is OK")
                        completion(parsedData, status, message)
                    } else {
                        
                        print("status is not OK")
                        completion(nil, status, message)
                    }
                }
            case .failure(let encodingError):
                print("Status Code: ")
                print("Error!")
                print(encodingError)
            }
    })
}
0 Answers
Related