是否可以在Alamofire中发送带有图像的文本数据?

时间:2016-03-18 06:48:44

标签: ios swift alamofire

我需要通过Alamofire发送一些文本数据和图像(多部分),例如:

{
    "name": "Me",
    "age":  "23",
    "image": file_goes_here
}

我知道如何将文本数据和图像分别作为multipart发送,但我不知道如何将其全部发送到同一个请求中。有可能吗?

2 个答案:

答案 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
}