private function upload() { $fileParts = explode('.', $this->getName()); $extension = array_pop($fileParts); $mimeType = $this->mimeType ?: $this->getMimeTypeForExtension($extension); $headers = ParseClient::_getRequestHeaders(null, false); $url = ParseClient::getAPIUrl() . 'files/' . $this->getName(); $rest = curl_init(); curl_setopt($rest, CURLOPT_URL, $url); curl_setopt($rest, CURLOPT_RETURNTRANSFER, 1); curl_setopt($rest, CURLOPT_BINARYTRANSFER, 1); $headers[] = 'Content-Type: ' . $mimeType; curl_setopt($rest, CURLOPT_POST, 1); curl_setopt($rest, CURLOPT_POSTFIELDS, $this->getData()); curl_setopt($rest, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($rest); $contentType = curl_getinfo($rest, CURLINFO_CONTENT_TYPE); if (curl_errno($rest)) { throw new ParseException(curl_error($rest), curl_errno($rest)); } curl_close($rest); if (strpos($contentType, 'text/html') !== false) { throw new ParseException('Bad Request', -1); } $decoded = json_decode($response, true); if (isset($decoded['error'])) { throw new ParseException($decoded['error'], isset($decoded['code']) ? $decoded['code'] : 0); } return $decoded; }