Alamofire,使用参数中的结构上传 MultipartFormData
Posted
技术标签:
【中文标题】Alamofire,使用参数中的结构上传 MultipartFormData【英文标题】:Alamofire, uploading MultipartFormData with struct in parameters 【发布时间】:2017-02-15 21:15:43 【问题描述】:上传MultipartFormData时如何在参数中添加struct:
let parameters = [
"parameter1": "test1",
"parameter2": "test2"]
Alamofire.upload(multipartFormData: multipartFormData in
for (key, value) in parameters
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
multipartFormData.append(structObject, withName: "user")
if let imageData = UIImageJPEGRepresentation(image, 1)
multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png", mimeType: "image/png")
, to: url, encodingCompletion: encodingResult in
switch encodingResult
case .success(let upload, _, _):
upload.responseJSON response in
if let value = response.result.value as AnyObject?
let json = JSON(value)
else
case .failure(let encodingError):
print(encodingError)
)
我可以添加额外的参数没有任何问题,但我不能将对象添加到参数数组
谢谢
【问题讨论】:
你的struct
在哪里?
multipartFormData.append(structObject, withName: "user"),有使用简单结构的情况,有使用复杂结构的情况
【参考方案1】:
在 multipartFormData 下方添加以下内容以在参数映射之间循环并附加参数键和值:
let parameters = [
"parameter1": "test1",
"parameter2": "test2"]
Alamofire.upload(multipartFormData: multipartFormData in
multipartFormData.append(structObject, withName: "user")
if let imageData = UIImageJPEGRepresentation(image, 1)
multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png", mimeType: "image/png")
for (key, value) in parameters
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
, to: url, encodingCompletion: encodingResult in
switch encodingResult
case .success(let upload, _, _):
upload.responseJSON response in
if let value = response.result.value as AnyObject?
let json = JSON(value)
else
case .failure(let encodingError):
print(encodingError)
)
【讨论】:
问题是我不能追加structObject 这里的“structObject”是什么?我看不到在哪里声明 这是一个简单的结构 我不明白你为什么要使用结构而不是 alamofire“参数”。也许您可以创建一个循环将数据从结构传递到参数映射。 然后你应该创建一个辅助函数,用该数据生成一个 [String: String]。但是你不能发送一个结构,你只能发送经典的 Alamofire “参数”。因此,我对此的回答是创建一个返回 [String:String] 的辅助函数,并将该映射附加到“参数”映射。使该函数接收产品详细信息、用户信息和您需要的所有内容,但请务必返回一个 [String:String],将其附加到“参数”,然后您就可以开始了。以上是关于Alamofire,使用参数中的结构上传 MultipartFormData的主要内容,如果未能解决你的问题,请参考以下文章