【发布时间】:2015-02-20 04:27:21
【问题描述】:
我正在使用AFNetworking2向服务器发送参数和图像。
manager.POST(urlPath, parameters: parameters, constructingBodyWithBlock: { (formData: AFMultipartFormData!) -> Void in
formData.appendPartWithFileData(imageData!, name: "image", fileName: "dummy.jpg", mimeType: "image/jpeg")
}, success: { (dataTask: NSURLSessionDataTask!, responseObject: AnyObject!) -> Void in
println("success: \(responseObject.description)")
}, failure: { (dataTask: NSURLSessionDataTask!, error: NSError!) -> Void in
println("failure: \(error)")
})
在服务器端,数据将是由parameters(QueryDict) 和图像data(MultiValueDict) 合并的dictionary:
data=MergeDict(<QueryDict: {u'owner': [u'6'], u'description': [u'this
is p1'], u'name': [u'p1']}>, <MultiValueDict: {u'image':
[<InMemoryUploadedFile: file.jpg (image/jpeg)>]}>)
我认为“MultiValueDict”来自这部分代码:formData.appendPartWithFileData(imageData!, name: "image", fileName: "dummy.jpg", mimeType: "image/jpeg")
但是,我希望 MultiValueDict 像这样:
{u'groupImages': [{u'image': [<InMemoryUploadedFile: file.jpg (image/jpeg)>]}]}
数据格式是一个带有数组值的Dictionary,该数组还有另一个Dictionary值。
那么我该怎么做才能让formData.appendPartWithFileData变成这样的上述数据格式呢?
编辑:
我看过一些与我的问题类似的帖子。 比如这个:AFNetworking post image in nested json
我试图像这样更改我的代码:
formData.appendPartWithFileData(imageData!, name: "groupImages[0].image", fileName: "dummy.jpg", mimeType: "image/jpeg")
或
formData.appendPartWithFileData(imageData!, name: "groupImages[0][image]", fileName: "dummy.jpg", mimeType: "image/jpeg")
但没有一个对我有用。
我的服务器希望收到这样的 JSON:
{
"name": "p2",
"owner": 6,
"description": "this is p2",
"groupImages": [{
"image": <InMemoryUploadedFile: dummy.jpg (image/jpeg)>
}]
}
有什么想法吗?
【问题讨论】:
标签: ios swift afnetworking-2