I'm trying to update my app to Alamofire 5 and having difficulties due to a hack-ish way I'm using it I guess.
Anyhow, I need background uploads and Alamofire is not really designed to do this. Even so, I was using it to create a properly formatted file containing multipart form so I can give it to the OS to upload in the background later.
I'll post the code doing this in Alamofire 4, my question is how can I get the url of the file I was previously getting with encodingResults?
// We're not actually going to upload photo via alamofire. It does not offer support for background uploads.
// Still we can use it to create a request and more importantly properly formatted file containing multipart form
                Api.alamofire.upload(
                    multipartFormData: { multipartFormData in
                        multipartFormData.append(imageData, withName: "photo[image]", fileName: filename, mimeType: "image/jpg")
                },
                    to: "http://", // if we give it a real url sometimes alamofire will attempt the first upload. I don't want to let it get to our servers but it fails if I feed it ""
                    usingThreshold: UInt64(0), // force alamofire to always write to file no matter how small the payload is
                    method: .post,
                    headers: Api.requestHeaders,
                    encodingCompletion: { encodingResult in
                        switch encodingResult {
                        case .success(let alamofireUploadTask, _, let url):
                            alamofireUploadTask.suspend()
                            defer { alamofireUploadTask.cancel() }
                            if let alamofireUploadFileUrl = url {                                
                                // we want to own the multipart file to avoid alamofire deleting it when we tell it to cancel its task
                                let fileUrl = ourFileUrl
                                do {
                                    try FileManager.default.copyItem(at: alamofireUploadFileUrl, to: fileUrl)
                                    // use the file we just created for a background upload
                                } catch {
                                }
                            }
                        case .failure:
                            // alamofire failed to encode the request file for some reason
                        }
                    }
                )