Envoyer des paramètres POST avec MultipartFormData à l'aide de Alamofire, dans iOS Swift
Je suis en utilisant Alamofire, très en premier temps. Je suis l'aide de la dernière version Alamofire 1.3.1. Je veux envoyer une image , une vidéo et des paramètres d'un appel d'API. Je suis à l'aide de plusieurs parties des données de formulaire. Le mutipart du module. Je suis confronté à un problème pour envoyer supplémentaire des paramètres POSTparams
. Ci-dessous mon code. "params" est le dictionnaire qui contient les paramètres supplémentaires? Comment puis-je ajouter ces paramètres POST dans la demande. S'il vous plaît aider
var fullUrl :String = Constants.BASE_URL + "/api/CompleteChallenge"
var params = [
"authKey": Constants.AuthKey,
"idUserChallenge": "16",
"comment": "",
"photo": imagePath,
"video": videoPath,
"latitude": "1",
"longitude": "1",
"location": "india"
]
let imagePathUrl = NSURL(fileURLWithPath: imagePath!)
let videoPathUrl = NSURL(fileURLWithPath: videoPath!)
Alamofire.upload(
.POST,
URLString: fullUrl, //http://httpbin.org/post
multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(fileURL: imagePathUrl!, name: "photo")
multipartFormData.appendBodyPart(fileURL: videoPathUrl!, name: "video")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { request, response, JSON, error in
}
}
case .Failure(let encodingError):
}
}
)
- possible en double stackoverflow.com/questions/26121827/...
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution 🙂 enfin.
Nous pouvons ajouter des données dans la demande comme étant multipartformdata.
Ci-dessous mon code.
EDIT 1: Pour ceux qui sont en train d'envoyer un tableau au lieu de float, int ou string, Ils peuvent convertir leur tableau ou tout type de structure de données en Json Chaîne, de passer cette chaîne JSON comme un fait normal de la chaîne. Et à analyser cette chaîne json au backend pour obtenir un exemplaire original de la matrice de
Dans Alamofire 4, il est important d'ajouter le corps de données avant vous ajoutez le fichier de données!
No such file or directory
ressemble à un mauvais chemin d'accès au fichierC'est de cette façon-je résoudre mon problème
Swift 3 /Alamofire 4.0 (Addendum à la accepté de répondre à)
À ajouter à
multipartFormData
dans Swift 3 /Alamofire 4.0, utilisez la méthode suivante deMultipartFormData
:Et, pour convertir
String
àData
, ledata(using:)
méthode deString
. E. g.,URLRequestConvertible
paramètre?Comme dans Swift 3.x pour charger une image avec le paramètre que nous pouvons utiliser en dessous de alamofire méthode de téléchargement-
Pour Swift 4.2 /Alamofire 4.7.3
Aussi, vous pouvez prendre un coup d'oeil à CodyFire lib il effectue des appels d'API plus facile à l'aide de Codable pour tout.
Exemple pour Multipart appel à l'aide de CodyFire
Vous pouvez prendre un coup d'oeil à tous les exemples de lib readme
pour alamofire 4 utilisez cette ..
Bien, depuis Multipart les Données du Formulaire est destiné à être utilisé pour des données binaires ( et du texte) de transmission de données, je crois que c'est une mauvaise pratique pour envoyer des données codées à la Chaîne sur elle.
Un autre inconvénient est l'impossibilité d'envoyer plus de paramètres complexes comme JSON.
Cela dit, une meilleure option serait d'envoyer toutes les données sous forme binaire, c'est en tant que Données.
Dire que j'ai besoin d'envoyer ces données
...en parallèle avec l'utilisateur de l'image:
Pour que je voudrais convertir ce texte les données en JSON et puis binaire, les côtés de l'image:
Et puis, enfin, il envoie via Multipart Formulaire de demande de Données: