Alamofire上传图片解决绑定参数问题
今天记录下载使用Alamofire上传图片时遇到的一个问题,在很多APP里面都有这样的需求,就是上传用户的头像,头像当然是和用户的ID是一一对应的关系,所有在上传图片的时候需要向服务器上传用户的ID或者其他的参数。但是在Alamofire上传文件的API中并没有参数的设置,下面就来解决这个问题。
首先利用cocoaPods导入框架:
use_frameworks!
target 'YourTargetsName' do
pod 'Alamofire'
end
Alamofire.upload(.POST, url, multipartFormData: { (multipartFormData) in
for image in imageArrays {
let data = UIImageJPEGRepresentation(image as! UIImage, 0.5)
let imageName = String(NSDate()) + ".png"
multipartFormData.appendBodyPart(data: data!, name: "name", fileName: imageName, mimeType: "image/png")
}
// 这里就是绑定参数的地方 param 是需要上传的参数,我这里是封装了一个方法从外面传过来的参数,你可以根据自己的需求用NSDictionary封装一个param
for (key, value) in param {
assert(value is String, "参数必须能够转换为NSData的类型,比如String")
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key )
}
}) { (encodingResult) in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON(completionHandler: { (response) in
completeBlock(responseObject: response.result.value!, error: nil)
})
case .Failure(let error):
completeBlock(responseObject: nil, error: error)
}
}