在 Swift4 中的 Alamofire 中请求多部分表单数据?



>您好,我是 swift4 的新手,并尝试用 swift4 语言调用 Alamofire 库的多部分表单数据请求? 下面是我的代码

Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append("1422".data(using: String.Encoding.utf8)!, withName: "u_id")
multipartFormData.append("How???".data(using: String.Encoding.utf8)!, withName: "firstname")
multipartFormData.append("We are woking on it!!".data(using: String.Encoding.utf8)!, withName: "description")
}, to: "URL_TOcall", encodingCompletion: { result in
print("result  = (result)")
switch result {
case .success(request: let request, streamingFromDisk: false, streamFileURL: nil):
//Success code
break
case .failure:
print("failed api calling")
break

case .success(let request, true, _):
//Code here
break
case .success(let request, _, _):
// Code here
break
}

})
}

如果您因为尚未上传图像数据而遇到问题

Alamofire.upload(multipartFormData: { multipartFormData in
// MISSING THIS LINE
if let imageData = UIImagePNGRepresentation(yourimage) {
multipartFormData.append(imageData, withName: "", fileName: "filename(Date().timeIntervalSince1970)")
}
multipartFormData.append("1422".data(using: String.Encoding.utf8)!, withName: "u_id")
multipartFormData.append("How???".data(using: String.Encoding.utf8)!, withName: "firstname")
multipartFormData.append("We are woking on it!!".data(using: String.Encoding.utf8)!, withName: "description")
}, to: "URL_TOcall", encodingCompletion: { result in
print("result  = (result)")
switch result {
case .success(let request, _,  _):
print(request)
request.responseJSON(completionHandler: { (resonse) in
print(resonse)
})

case .failure( let error):
print(error)
break
}
}
})
}

我已经解决了我的问题,我没有这样做太愚蠢和小事,但是在添加allowLossyConversion: false到我的字符串转换后,我就完成了这个技巧。

{
//corrected indentation for code
Alamofire.upload(multipartFormData: { multipartFormData in
multipartFormData.append("1422".data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: "u_id")
multipartFormData.append("How???".data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: "firstname")
multipartFormData.append("We are woking on it!!".data(using: String.Encoding.utf8, allowLossyConversion: false)!, withName: "description")
}, to: "URL_TOcall", encodingCompletion: { result in
print("result  = (result)")
switch result {
case .success(request: let request, streamingFromDisk: false, streamFileURL: nil):
//Success code
break
case .failure:
print("failed api calling")
break

case .success(let request, true, _):
//Code here
break
case .success(let request, _, _):
// Code here
break
}
})
}

最新更新