Rez*_*_Rg 20 upload xcode swift alamofire
我正在用swift开发一个iPhone应用程序.我正在使用Alamofire框架来处理http请求.我Alamofire.request像这样用于POST,GET等:
Alamofire.request(.POST, myURL , parameters: ["a": "1", "b" : "2" ])
.response { (request, response, data, error) in
}
Run Code Online (Sandbox Code Playgroud)
我Alamofire.upload用来将图像上传到服务器:
Alamofire.upload(.POST, uploadURL , fileURL)
Run Code Online (Sandbox Code Playgroud)
两者都很完美,但现在我想上传一个图像并发送一些参数,我的内容类型应该是multipart/form-data并且Alamofire.upload不接受参数.
有两个问题,更SO关于这一问题迅速,其中第一个没有使用Alamofire(真的,为什么不呢?),并在第二个,mattt(Alamofire开发)引用使用的编码参数.
我检查了他的例子,但仍然无法弄清楚如何做到这一点.
任何人都可以帮我解决这个问题吗?
谢谢!:)
ami*_*pta 23
您可以使用下面的Alamofire 3.0+代码
func uploadImageAndData(){
//parameters
let gender = "M"
let firstName = "firstName"
let lastName = "lastName"
let dob = "11-Jan-2000"
let aboutme = "aboutme"
let token = "token"
var parameters = [String:AnyObject]()
parameters = ["gender":gender,
"firstName":firstName,
"dob":dob,
"aboutme":about,
"token":token,
"lastName":lastName]
let URL = "http://yourserviceurl/"
let image = UIImage(named: "image.png")
Alamofire.upload(.POST, URL, multipartFormData: {
multipartFormData in
if let imageData = UIImageJPEGRepresentation(image, 0.6) {
multipartFormData.appendBodyPart(data: imageData, name: "image", fileName: "file.png", mimeType: "image/png")
}
for (key, value) in parameters {
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
}
}, encodingCompletion: {
encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
print("s")
upload.responseJSON {
response in
print(response.request) // original URL request
print(response.response) // URL response
print(response.data) // server data
print(response.result) // result of response serialization
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
case .Failure(let encodingError):
print(encodingError)
}
})
}
Run Code Online (Sandbox Code Playgroud)
Phi*_*vin -2
要使用编码参数,请创建一个 ParameterEncoding 变量,为其分配编码类型(枚举的情况,包括 .JSON、.URL),然后将编码函数与 NSURLRequest 和参数一起使用。该函数返回一个包含两个元素的元组,第一个是生成的 NSURLRequest,第二个是生成的可能的 NSError。
以下是我如何将其用于项目中所需的自定义标头
var parameterEncoding:ParameterEncoding!
switch method {
case .POST, .PUT :
parameterEncoding = ParameterEncoding.JSON
default :
parameterEncoding = ParameterEncoding.URL
}
var alamoRequest = Alamofire.Manager.sharedInstance.request(parameterEncoding.encode(mutableURLRequest, parameters: parameters).0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26981 次 |
| 最近记录: |