我需要通过Alamofire发送一些文本数据和图像(多部分),例如:
{
"name": "Me",
"age": "23",
"image": file_goes_here
}
我知道如何将文本数据和图像分别作为multipart发送,但我不知道如何将其全部发送到同一个请求中。有可能吗?
答案 0 :(得分:0)
你可以使用这样的东西 -
Alamofire.upload(.POST, urlString, headers: nil, multipartFormData: { (multipartFormData) -> Void in
multipartFormData.appendBodyPart(data: name.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"name")
multipartFormData.appendBodyPart(data: age.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"age")
//.....
}, encodingCompletion: { encodingResult in
//...
}
}
)
答案 1 :(得分:0)
您可以将图像数据编码为base64格式。
// Use image name from bundle to create NSData
let image : UIImage = UIImage(named:"imageName")!
let imageData = UIImagePNGRepresentation(image)
Swift 2.0编码
let base64String = imageData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength)
Swift 2.0解码
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
然后将base64字符串附加到帖子数据
{
"name": "Me",
"age": "23",
"image": base64String
}