Skip to content

Instantly share code, notes, and snippets.

@DejanEnspyra
Created July 2, 2017 07:55
Show Gist options
  • Save DejanEnspyra/5bae2a301b2b2bb5de3109344345617f to your computer and use it in GitHub Desktop.
Save DejanEnspyra/5bae2a301b2b2bb5de3109344345617f to your computer and use it in GitHub Desktop.
Alamofire 4 — Multipart file upload with Swift 3 (http://theappspace.com/multipart-file-upload/)
func requestWith(endUrl: String, imageData: Data?, parameters: [String : Any], onCompletion: ((JSON?) -> Void)? = nil, onError: ((Error?) -> Void)? = nil){
let url = "http://google.com" /* your API url */
let headers: HTTPHeaders = [
/* "Authorization": "your_access_token", in case you need authorization header */
"Content-type": "multipart/form-data"
]
Alamofire.upload(multipartFormData: { (multipartFormData) in
for (key, value) in parameters {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
}
if let data = imageData{
multipartFormData.append(data, withName: "image", fileName: "image.png", mimeType: "image/png")
}
}, usingThreshold: UInt64.init(), to: url, method: .post, headers: headers) { (result) in
switch result{
case .success(let upload, _, _):
upload.responseJSON { response in
print("Succesfully uploaded")
if let err = response.error{
onError?(err)
return
}
onCompletion?(nil)
}
case .failure(let error):
print("Error in upload: \(error.localizedDescription)")
onError?(error)
}
}
}
@thenooralam
Copy link

how can I get the request if I want to cancel that upload request?

@MallikarjunH
Copy link

Fantastic. Its working fine for me

@Mohamed-AbdulRaouf
Copy link

Thank you

@vinothvino42
Copy link

Thanks. I'm having response like this

Response status code was unacceptable: 400.

My backend team saying that we're not getting any data from your side. But I'm sending the image as data only. Anyone have idea ?

@29satnam
Copy link

Still saving lives!

@digvijay1331
Copy link

when the app is entered to background API failed, how to handle?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment