Alamofire 4 — Multipart file upload with Swift 3

Previously I have introduced you to Alamofire and how you can use it to simple HTTP requests and intercept JSON responses. Today, we will speak for a more complex and a must-know topic — how to create a Multipart File Upload request.

Multipart File Upload request

HTTP multipart file upload request is a request that HTTP clients construct to send files and data over to HTTP Server. It is commonly used by HTTP clients to upload files to the server.

In this tutorial, I am showing you how to construct a multipart file upload request, previously tested by me in many other projects so I can guarantee that it is working. This is a copy-paste solution but I would like to explain a bit what is going on. Before we start, don’t forget to install Alamofire and call import Alamofire in your file.

Recommended for you: How to access iOS Camera and Photo Library in Swift 3


I have created this function to support as many arguments as possible. I will start by order:

  • endUrl: String — I suppose you are keeping your base URL in some other helper function (for this presentation I have hard coded it in the url variable), so this argument will be for attaching the endpoint to your base URL.
  • imageData: Data? — this is an argument that you need to pass your UIImage converted in a Data type. It is optional, so you can pass nil if you don’t have an image to pass.
  • parameters: [String : Any] — an argument where you need to pass your additional key value POST parameters. Pass an empty key — value object, if you don’t have any.
  • onCompletition — a closure block where you will pass the success response
  • onError — a closure block where you will pass the error response

If you don’t know how to convert UIImage to Data, here is a snippet that can help you:

let img = UIImage(named:"someImage.png")
let data = UIImageJPEGRepresentation(img, 1.0)

Recommended for you: How to convert HTML using NSAttributedString

I really hope that this tutorial helped you discover how to create multipart file upload requests. If you have any questions please leave a comment in the comments section. Also, spread the word by sharing this post or ❤.

Originally posted on