23

How do we add an authentication header to the upload function of Alamofire 4.0?

below is the sample code, however I see no way in adding a header to the function.

Alamofire.upload(
    multipartFormData: { multipartFormData in
        multipartFormData.append(unicornImageURL, withName: "unicorn")
        multipartFormData.append(rainbowImageURL, withName: "rainbow")
    },
    to: "https://httpbin.org/post",
    encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                debugPrint(response)
            }
        case .failure(let encodingError):
            print(encodingError)
        }
    }
)

Previous version of alamofire supported adding header directly, but not the new one. Any ideas?

JayVDiyk
  • 4,277
  • 22
  • 70
  • 135

1 Answers1

80

I got the solution.

Alamofire.upload(multipartFormData:{ multipartFormData in
         multipartFormData.append(unicornImageURL, withName: "unicorn")
         multipartFormData.append(rainbowImageURL, withName: "rainbow")},
       usingThreshold:UInt64.init(),
       to:"https://httpbin.org/post",
       method:.post, 
       headers:["Authorization": "auth_token"], 
       encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                debugPrint(response)
            }
        case .failure(let encodingError):
            print(encodingError)
        }
    })

Hope it will help you.

Ekta Padaliya
  • 5,743
  • 3
  • 39
  • 51
  • Thanks for accepting. I have one question related image upload with its progress. If you know then can you please help me? I have added question on SO now. – Ekta Padaliya Sep 22 '16 at 07:08
  • http://stackoverflow.com/questions/39631823/swift-3-alamofilre-4-0-multipart-upload-with-progress. – Ekta Padaliya Sep 22 '16 at 07:10
  • how about audio file in Alamofire 4? - i try to send a audio file in this form : multipartFormData.append(audioLocalPath, withName: "file", fileName: "file", mimeType: "application/octet-stream") but occur this error : multipartEncodingFailed(Alamofire.AFError.MultipartEncodingFailureReason.bodyPartFileNotReachableWithError(file:///var/mobile/Containers/....... /Documents/item.mp3, NSUnderlyingError=0x16049100 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}})) - where is problem? -bad request or bad audio path? – Saeid Dec 06 '16 at 13:53
  • Ekta, I know I shouldn't put comments like this, but I had too. This small piece of code was very useful! worked perfectly!! THANK YOU!! – user3069232 Aug 19 '17 at 17:26
  • how to add parameters with upload,can you halp me. – Malleswari Apr 06 '18 at 10:27
  • @Malleswari yes. What you want ? – Ekta Padaliya Apr 06 '18 at 10:29
  • i want to pass - method: .post, parameters: parameters, headers: ["Authorization": "auth_token"], using Alamofire.upload() – Malleswari Apr 06 '18 at 10:36
  • @Malleswari please check my answer here. https://stackoverflow.com/questions/39809867/alamofire-4-upload-with-parameters/39825225#39825225 – Ekta Padaliya Apr 06 '18 at 11:00
  • hi @EktaPadaliya , could you please help my problem in uploading using alamofire ? tahnks in advance , maybe you have the answer. https://stackoverflow.com/questions/50327062/how-to-upload-an-image-using-alamofire-multipart-form-data-with-basic-authentica – sarah May 14 '18 at 09:28
  • let url = try! URLRequest(url: URL(string: urlString)!, method: .post, headers: headers) – Puji Wahono Mar 19 '19 at 03:31