2016-11-29 5 views
0

Ich versuche, mehrteilige Anfrage mit Alamofire 4 zu erstellen. Ich werde [String: AnyObject] als Teil hinzufügen. Aber wenn multipartFormData bool oder [Int] von meiner Nutzlastdict App anhängte, stürzte es ab! Wo ist mein Fehler?Alamofire 4 multipart

let payload: [String: AnyObject] = [ 
     "key1": "val1" as AnyObject, 
     "key2": true as AnyObject, 
     "key3" : [1,2,3,4] as AnyObject 
    ] 

    let requestString = "http://www.url.com/api/action" 

    Alamofire.upload(multipartFormData: { (multipartFormData) in 
     for (key, value) in payload { 
      multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue, allowLossyConversion: false)!, withName: "request", fileName: key, mimeType: "application/json") 
     } 
     multipartFormData.append(imageUrl, withName: "fileData", fileName: "image", mimeType: "image/png") 

    }, to: requestString, method: .post , headers: ["Content-Type": "multipart/form-data"], encodingCompletion: { (result) in 
     switch result { 
     case .success(let upload, _, _): 

      upload.uploadProgress(closure: { (progress) in 
       print(progress.fractionCompleted * 100) 
      }) 

      upload.responseJSON(completionHandler: { (response) in 
      }) 
     case .failure(let error): 
      print(error) 

     } 
    }) 

Antwort

1

Sie senden falschen Parameter. Versuchen Sie unter Code für Alamofire 4.

let payload: [String: AnyObject] = [ 
    "key1": "val1" as AnyObject, 
    "key2": true as AnyObject, 
    "key3" : [1,2,3,4] as AnyObject 
] 

let requestString = "http://www.url.com/api/action" 

Alamofire.upload(multipartFormData: { (multipartFormData) in 
    multipartFormData.append(UIImageJPEGRepresentation(self.photoImageView.image!, 0.5)!, withName: "photo_path", fileName: "swift_file.jpeg", mimeType: "image/jpeg") 
    for (key, value) in payload { 
     multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key) 
    } 
    }, to: requestString, method: .post , headers:nil, encodingCompletion: { (result) in 
    switch result { 
    case .success(let upload, _, _): 

     upload.uploadProgress(closure: { (progress) in 
      print(progress.fractionCompleted * 100) 
     }) 

     upload.responseJSON(completionHandler: { (response) in 
     }) 
    case .failure(let error): 
     print(error) 

    } 
}) 
+0

'multipartFormData.append (value.data (mit: String.Encoding.utf8) !, withname: key)' funktioniert nicht für Arrays, z.B. '" key3 ": [1,2,3,4] als AnyObject' –

Verwandte Themen