Sugar Developer Blog

Development Tips and Tricks from our own Development and Implementation Team

Uploading Files With Sugar’s REST API

The standard Sugar API documentation appears to cause issues with the latest version of the API. It appears to return an error: {"error":"missing_parameter","error_message":"Attachment is missing"} It also suggests a deprecated CURL call which will return the following warning: “The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead.” The following example demonstrates how to upload an attachment to a note using the REST API: /* Initialise */ $fileToUpload = “/documents/demo.jpg”; $mimetype = “image/jpeg”; $filename = “demo.jpg”; /* Ensure a fully qualified path to the file */ $path=realpath($fileToUpload); /* Create a curl file wrapper */ $fileData=curl_file_create($path,$mimetype,$filename); /* Build the POST vars */ $rawPOSTdata = array( “format” => “sugar-html-json”, “delete_if_fails” => false, “oauth_token” => $token, “filename” => $fileData, ); /* Set up CURL, note the rawPOSTdata should NOT be json encoded, and the Content-Type header must be multipart/form-data */ $curl = curl_init(“<target host url goes here>”); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $rawPOSTdata); curl_setopt($curl, CURLOPT_HTTPHEADER, array(‘Content-Type: multipart/form-data’, “Cache-Control: no-cache”, “OAuth-Token: $token”)); /* Make the CURL call */ $response = curl_exec($curl); if (!$response) { die(“Rest Failure.\n”); }...[Read in Full]