static func uploadImage(image:UIImage,token:String, imageType:String, callback:((message:String?, error:String?)->Void))->NSURLSessionTask{ var imageData = UIImagePNGRepresentation(image) var request = NSMutableURLRequest(URL: NSURL(string:APIKeys.url.rawValue)!) request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData var session = NSURLSession.sharedSession() request.HTTPMethod = "POST" var boundary = NSString(format: "---------------------------14737809831466499882746641449") var contentType = NSString(format: "multipart/form-data; boundary=%@",boundary) request.addValue(contentType as String, forHTTPHeaderField: "Content-Type") var body = NSMutableData.alloc() // Add body.appendData(NSString(format: "\r\n--%@\r\n",boundary).dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(NSString(format:"Content-Disposition: form-data; name=\"add\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData("Test".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!) // Image Internal Type, mime later body.appendData(NSString(format: "\r\n--%@\r\n",boundary).dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(NSString(format:"Content-Disposition: form-data; name=\"content_type\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(imageType.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!) // Token body.appendData(NSString(format: "\r\n--%@\r\n",boundary).dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(NSString(format:"Content-Disposition: form-data; name=\"tok\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(token.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!) //Other fields body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(NSString(format:"Content-Disposition: form-data; name=\"image\"; filename=\"img\(NSDate()).png\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(NSString(format: "Content-Type: image/png\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) body.appendData(imageData) body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!) request.HTTPBody = body // session.uploadTaskWithRequest(request, fromData: body) // NSURLSessionUploadTask() let task = session.uploadTaskWithRequest(request, fromData: body, completionHandler: { (data, response, error) -> Void in var returnString:String? if let data = data, string = NSString(data: data, encoding: NSUTF8StringEncoding) { returnString = string as String } var errorText:String? if let error = error{ errorText = error.description } callback(message: returnString, error: errorText) }) task.resume() return task }