Reputation: 478
I am trying to make video upload on the server. I am using Alamofire. I'm getting closer to a solution but ... I have a multipart data form method, which includes such parameters "param1":"test", "param2":["1", "2"], param3:{"test": "123 "}
param1 still place a function Alamofire.upload:
multipartFormData.appendBodyPart (date "test" .dataUsingEncoding (NSUTF8StringEncoding, allowLossyConversion: false) !, name: "param1")
How to add param2 and param3?
There is my method:
Alamofire.upload(
.POST,
url,
headers: headers,
multipartFormData: { multipartFormData in
multipartFormData.appendBodyPart(data: "test".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"param1")
//it is only visualization what I want to do. I know that it isn't working.
//multipartFormData.appendBodyPart(data: ["1", "2"].dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"param2")
//multipartFormData.appendBodyPart(data: {"test": "123 "}.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"param3")
let fileURL = DataManager().getFileDirectionForFile("movie.mp4")
multipartFormData.appendBodyPart(fileURL: fileURL, name: "file")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseString { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
Upvotes: 2
Views: 1297
Reputation: 1564
First create the param dict to pass in request.
let array = ["1","2"]
let dict = [
"test" : "123"
]
let params = [
"param1" : "test",
"param2" : array,
"param3" : dict
]
and then pass that params variable to Alamofire.upload
Alamofire.upload(.POST, url, multipartFormData: { (multipartFormData) in
multipartFormData.appendBodyPart(data: params["param1"]!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name: "param1")
multipartFormData.appendBodyPart(data: params["param2"]!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name: "param2")
multipartFormData.appendBodyPart(data: params["param3"]!.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name: "param3")
}) { (encodingResult) in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseString { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
Upvotes: 5
Reputation: 6114
It depends from your API. My API in same situation can handle this format:
multipartFormData.appendBodyPart(data: "1".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"param2[0]")
multipartFormData.appendBodyPart(data: "2".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"param2[1]")
multipartFormData.appendBodyPart(data: "123 ".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"param3[test]")
Maybe will work for you too.
Upvotes: 0