Farzad
Farzad

Reputation: 2090

ios swift 4 - Alamofire post parameter with UIimage file (convert curl to alamofire)

i want to send .post request to upload an image. base of request is this cURL:

curl -X POST \
    --header "Authorization: 123456..." \
    --header "X-Storage-Id: 123456..." \
    --form fileItems[0].fileToUpload=@"/path/to/file1.txt"  \
    --form fileItems[0].path="/path1/path2/"    \
    --form fileItems[0].replacing=true  \
    --form fileItems[1].fileToUpload=@"/path/to/file2.txt"  \
    --form fileItems[1].path="/path1/path3/"    \
    --form fileItems[1].replacing=true  \
    http://example.com/uploadfiles

i have UIImage from :

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        picker.dismiss(animated: true, completion: nil)

        let image = info[UIImagePickerControllerEditedImage] as! UIImage


        // image  <------- i have this uiimage for uploading

    }

how to upload image (UIImage) with above cURL via Alamofire?

Upvotes: 0

Views: 165

Answers (1)

Brandon
Brandon

Reputation: 23500

let data = UIImagePNGRepresentation(image)!

let headers = ["Authorization": "...", 
               "X-Storage-Id": "..."]

let parameters = ["fileItems[0].replacing": "true",
                  "fileItems[0].path": "/path/something"]

Alamofire.upload(multipartFormData: { form in

    form.append(data,
                withName: "fileItems[0]",
                fileName: "file1.png",
                mimeType: "image/png")

    parameters.forEach({
        form.append($0.value.data(using: .utf8)!, withName: $0.key)
    })

}, to: "https://example.com/uploadfiles", method: .post, headers: headers) { result in

    //switch result { ... }

}

Upvotes: 3

Related Questions