2017-01-16 4 views
0

Die Migration war für mich ein Albtraum. Ich habe diesen alten Code aus der vorherige Version von Swift/iOS/AlamofireWie führe ich einen multipartFormData-Upload in Alamofire4 durch?

let intVal = 0 

Alamofire.upload(.POST, url, headers: ["StringValue": intVal, "StringValue2": "StringValue3"], multipartFormData: { mpfd in 
     let image = self.profileImageView.image! 
     let imageData = UIImageJPEGRepresentation(image, 0.8)! 
     mpfd.appendBodyPart(data: imageData, name: "image", fileName: "custom_image.jpg", mimeType: "image/jpeg") 
     }, encodingCompletion: { result in 

      switch result { 
      case .success(let request, _, _): 
       let response = request.response 
       print("response from image change: \(response)") 
       print("Successfully changed pro pic") 
      case .failure/*(let encodingError)*/: 
       print("Failed to change pro pic") 
      } 

    }) 

Aber jetzt Xcode ist mir einen Fehler geben „mehrdeutigen Verweis auf Mitglied‚upload (_: bis: Methode: Header)“sagen, aber ich Ich weiß nicht, ob ich diesen Fehlermeldungen trauen kann, weil Alamofire feuert und jetzt Tausende von Fehlern wirft, ein Beispiel ist, dass encoding: .json jetzt JSONEncoding.default ist, aber Xcode sagt mir, dass der Fehler "Extra Methode im Funktionsaufruf" ist. Also habe ich versucht, die Lösung für die meisten anderen Fehler, die die Methode und URL Argumente

Alamofire.upload(url, method: .post, headers ...) 

Aber auch zu wechseln ist nicht funktioniert. Wie soll ich das umschreiben um mit dem neuen Swift/Alamofire zu arbeiten?

+0

[Verwandte Q & A] (http://stackoverflow.com/questions/41401913/cannot-invoke-append-with-an-argument-list- von-type-string-mitname-string /) – dfri

Antwort

1

Es ist ein Beispiel in Alamofire-Test-Suite: https://github.com/Alamofire/Alamofire/blob/9688b16f0546b97b16c775c75f42b3f4bfacc78e/Tests/UploadTests.swift#L244

guard let image = self.profileImageView.image, 
    let imageData = UIImageJPEGRepresentation(image, 0.8) else { 
    return 
} 

Alamofire.upload(
    multipartFormData: { multipartFormData in 
    mpfd.append(imageData, withName: "image", fileName: "custom_image.jpg", mimeType: "image/jpeg") 
    }, 
    to: url, 
    headers: ["Header": value, "Another_Header": value2], 
    encodingCompletion: { result in 
    // Whatever 
    } 
) 
+0

wo würde ich einen 'headers'-Parameter wie in meinem Original eingeben? Das ist eigentlich meine Hauptfrage –

+0

Es ist ein optionaler Parameter auf der "Upload" -Funktion. Siehe https://github.com/Alamofire/Alamofire/blob/2b65bfe6608a236772b4151b0ec9e82a51a22131/Source/Alamofire.swift#L376 - Ich habe die Antwort so bearbeitet, dass sie Header enthält – Estel

Verwandte Themen