0

Im trying to upload an image inside a tableview with alamofire to my server. I'm using php as my backend and already have the php part done. Problem is I have no idea how to implement the image inside my alamofire code. Any help would be appreciated thanks.

//Submit Button///////////////////////

@IBAction func submit(_ sender: UIButton) {

let cell = sender.superview?.superview as! RegisterCell

var variable01 = cell.variable01.text!
var variable02 = cell.variable02.text!

let registerUrl = "http://www.website.com/register.php?var01=\(variable01)&var02=\(variable02)"

let urlEncodedString = registerUrl.replacingOccurrences(of: " ", with: "%20")

self.parseJSON(url: urlEncodedString)

}

//Parse JSON//////////////////////////

func parseJSON(url : String){

Alamofire.request(url).responseJSON(completionHandler: {

response in

self.parseData(JSONData: response.data!)

})}

func parseData(JSONData : Data){

do {

var readableJSON = try JSONSerialization.jsonObject(with: JSONData, options: .mutableContainers) as! JSONObject

if let signJSON = readableJSON["Register"] as? [JSONObject] {

for i in 0..<signJSON.count {

let JSON = signJSON[i]

let parseStatus = JSON["sendStatus"] as! String

let parseMessage = JSON["sendMessage"] as! String

if parseStatus == "Error" {print("Error"); self.Alert("\(parseMessage)") }

else if parseStatus == "Success" {

performSegue(withIdentifier: "Register01=>Register02", sender: self)}

}}}

catch {print(error)}

}
Brett Taylor
  • 125
  • 2
  • 9
  • Possible duplicate of [upload image to server using Alamofire](https://stackoverflow.com/questions/40519829/upload-image-to-server-using-alamofire) – nathan Aug 11 '17 at 02:06
  • 1
    Possible duplicate of [Alamofire 4 upload with parameters](https://stackoverflow.com/questions/39809867/alamofire-4-upload-with-parameters) – Jaydeep Vora Aug 11 '17 at 04:50
  • I know this is a possible duplicate. What I'm looking for though is how would I implement photo upload in this exact code. Thanks. Most tutorials use cases instead of if then and I don't really understand those. And also provide parameters inside url link. – Brett Taylor Aug 13 '17 at 20:03

1 Answers1

0

Please try this

func commonNetworkCallToUploadImage( imageData : Data,withName : String,fileName : String,header :[String:String],url:String,method:HTTPMethod,parameters : [String:Any]?,completionHandler:@escaping (JSON?,String?)->Void) {

    Alamofire.upload(multipartFormData: { (formData) in
        formData.append(imageData, withName: withName, fileName: fileName, mimeType: "image/jpg")
        for (key,value) in parameters!{
            let components = String(describing: value)
            let data = (components).data(using:.utf8)
            formData.append(data!, withName: key)
        }
        },to: url ,method:method,
          headers:header,
          encodingCompletion:{ (encodingResult) in
            switch encodingResult {
            case .success(let upload,_ , _):
                upload.responseJSON { response in
                    if let data = response.result.value {
                        let json = JSON(data)
                       completionHandler(json,nil)
                    }
                }
            case .failure(let encodingError):
                completionHandler(nil,encodingError.localizedDescription)
            }
    })

}
Ved Rauniyar
  • 1,539
  • 14
  • 21