我使用AFNetworking2
發送參數和圖像到服務器。AFNetworking 2.0發送參數和圖像到服務器
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)
合併一個dictionary
和圖像data(MultiValueDict)
:從這部分代碼
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' 是:
我想有MultiValueDict
是這樣的: {u'groupImages': [{u'image': [<InMemoryUploadedFile: file.jpg (image/jpeg)>]}]}
的數據格式是與陣列值的字典,並且陣列具有另一字典值。
那麼我能做些什麼來使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)>
}]
}
任何想法?
感謝您的回答亞倫。首先,我只想確保在AFNetworking constructBodyWithBlock中代表嵌套JSON {'groupImages':[{'image':#imageData}]'的這種格式'groupImages [0] [image]'是正確的,對吧?在服務器端,我使用Django Rest Framework 3.0。我對雙方都是新的,所以我需要一些時間來找出答案。 – redstone