2017-03-06 4 views
0

Ich benutze Alamofire für meine Daten auf dem Server. Ich habe ein Bild, das ich auf den Server in Datenform mit einigen anderen Parametern hochladen möchte. In Alamofire verwende ich die Methode multipartFormData, um alle Parameter und das Bild zu veröffentlichen. Server Bedürfnisse Daten im JSON-Format mit Parametern sein, die unten gezeigt wird:Bild hochladen mit Parametern mit Alamofire in Swift

{"product_name": "almondsfdsfsdf", 
"product_price": "400", 
"product_img": image.jpg} 

ich versuche aber es gibt mir einen Fehler in der Antwort. Hier ist mein Code von dem, was ich mit alamofire in swift tue:

let productName = itemNameTF.text! 
let productPrice = itemPriceTF.text! 
let productImage:UIImage = itemImage.image! 
let url = "URL" 
let parameter = ["product_name": productName, "product_price": productPrice] 
let headers : HTTPHeaders = ["Content-Type": "application/json","Authorization" : "Token abcd"] 
Alamofire.upload(multipartFormData: { 
      multipartFormData in 
      if let imageData = UIImageJPEGRepresentation(productImage, 0.5){ 
       multipartFormData.append(imageData, withName: "image", fileName: "file.png", mimeType: "image/png") 
      } 

      for (key,value) in parameter { 
       multipartFormData.append(value.data(using: .utf8)!, withName: key) 
      } 
     }, to: url,method: .post, headers: headers, encodingCompletion: { encodingResult in 
      switch encodingResult { 
      case .success(let upload,_,_): 
       upload.responseJSON { response in 

        print(response.request) 
        print(response.response) 
        print(response.result) 
        print(response.data) 
       } 
       break 
      case .failure(let encodingError): 
       print("error: \(encodingError)") 
       break 
      } 
     }) 

Mein Server akzeptieren Bild in BLOB-Daten. Wenn mir jemand helfen könnte. Vielen Dank!

Antwort

0

Versuchen Sie, diese Linie zu ändern:

multipartFormData.append(imageData, withName: "image", fileName: "file.png", mimeType: "image/png") 

Um dies:

multipartFormData.append(imageData, withName: "product_img", fileName: "image.jpg", mimeType: "image/jpeg") 
+0

Gleiche Antwort heißt Failure @chengsam –

+0

Was ist der Fehler? – chengsam

+0

Kein Fehler, aber wenn ich versuche, Ergebnis zu drucken, gibt es einen Fehler –

0

Bitte nehmen Sie von unten Methode anhand der Antwort (Arbeiten für den Alamofire 3.0+) zu erhalten.

func uploadImageAndData(){ 

    var parameters = [String:AnyObject]() 
    parameters = ["token":token, 
        "lastName":lastName] 

    let URL = "http://yourserviceurl/" 
    let image = UIImage(named: "image.png") 

    Alamofire.upload(.POST, URL, multipartFormData: { 
     multipartFormData in 

     if let imageData = UIImageJPEGRepresentation(image, 0.6) { 
      multipartFormData.appendBodyPart(data: imageData, name: "image", fileName: "file.png", mimeType: "image/png") 
     } 

     for (key, value) in parameters { 
      multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key) 
     } 
    }, encodingCompletion: { 
     encodingResult in 

     switch encodingResult { 
     case .Success(let upload, _, _): 
      print("s") 
      upload.responseJSON { 
       response in 
       print(response.request) // original URL request 
       print(response.response) // URL response 
       print(response.data)  // server data 
       print(response.result) // result of response serialization 

       if let JSON = response.result.value { 
        print("JSON: \(JSON)") 
       } 
      } 
     case .Failure(let encodingError): 
      print(encodingError) 
     } 
    }) 
} 
+0

hat das gleiche gemacht –

+0

@shahinaliagharia Es gibt keine serverseitigen Probleme Richtig? –

+0

Keine Probleme auf dem Server –

Verwandte Themen