2017-10-15 5 views
0

je peux envoyer l'image à une API (modération) et le relier à un « média » param dans postier comme ceci:Comment télécharger l'image avec Alamofire et référençant le fichier dans params

enter image description here

maintenant J'essaye de faire la même chose en swift. J'ai suivi l'exemple here mais j'ai obtenu une erreur: Support non spécifié. Voici mon code: Le fichier d'image ajouté n'est-il pas lié au paramètre media correctement?

let image = self.descriptionImage.image! 
    let parameters = [ 
     "api_user": "xxxxx", 
     "api_secret": "xxxxx", 
     "models": "nudity,wad", 
     "media": "file.png" 
    ] 

    Alamofire.upload(multipartFormData: { multipartFormData in 
     if let imageData = UIImageJPEGRepresentation(image, 1) { 
      multipartFormData.append(imageData, withName: "file.png", fileName: "file.png", mimeType: "image/png") 
     } 

     for p in parameters { 
      let value = p.value 
      multipartFormData.append((value.data(using: .utf8))!, withName: p.key) 
     }}, to: "https://api.sightengine.com/1.0/check.json", method: .post, headers: nil, 
      encodingCompletion: { encodingResult in 
       switch encodingResult { 
       case .success(let upload, _, _): 
        upload.response { [weak self] response in 
         guard let strongSelf = self else { 
          return 
         } 
         print(response.data) 
         print("strongSelf") 

         debugPrint(response) 

        } 
       case .failure(let encodingError): 
        print("error:\(encodingError)") 
       } 
    }) 

Répondre

1

Le paramètre de l'image doit être spécifiée dans les données de formulaire multipart, essayez de modifier le code ci-dessous:

let image = self.descriptionImage.image! 
let parameters = [ 
    "api_user": "xxxxx", 
    "api_secret": "xxxxx", 
    "models": "nudity,wad" 
] 

Alamofire.upload(multipartFormData: { multipartFormData in 
    if let imageData = UIImagePNGRepresentation(image) { 
     multipartFormData.append(imageData, withName: "media", fileName: "file.png", mimeType: "image/png") 
    } 

    for p in parameters { 
     let value = p.value 
     multipartFormData.append((value.data(using: .utf8))!, withName: p.key) 
    }}, to: "https://api.sightengine.com/1.0/check.json", method: .post, headers: nil, 
     encodingCompletion: { encodingResult in 
      switch encodingResult { 
      case .success(let upload, _, _): 
       upload.response { [weak self] response in 
        guard let strongSelf = self else { 
         return 
        } 
        print(response.data) 
        print("strongSelf") 

        debugPrint(response) 

       } 
      case .failure(let encodingError): 
       print("error:\(encodingError)") 
      } 
}) 
+0

omg merci beaucoup je l'ai eu du mal avec cette toute la nuit: DDD – user3517546

+0

@ user3517546 Heureux que cela vous aide. – chengsam