0

I've the next code for uploding a file to some service, I would like to change the code so I can send the file data from variable and no uploading it from a file.

Any idea how to do so?

(For example : $file_content = "content-goes-here"; and upload the content directly from the variable)

$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandle, CURLOPT_USERPWD, "$applicationId:$password");
curl_setopt($curlHandle, CURLOPT_POST, 1);
curl_setopt($curlHandle, CURLOPT_USERAGENT, "PHP Cloud SDK Sample");
curl_setopt($curlHandle, CURLOPT_FAILONERROR, true);
$post_array = array();
if ((version_compare(PHP_VERSION, '5.5') >= 0)) {
    $post_array["my_file"] = new CURLFile($filePath);
} else {
    $post_array["my_file"] = "@".$filePath;
}
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $post_array); 
$response = curl_exec($curlHandle);
if ($response == FALSE) {
    $errorText = curl_error($curlHandle);
    curl_close($curlHandle);
    die($errorText);
}
$httpCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
curl_close($curlHandle);
// Parse xml response
$xml = simplexml_load_string($response);
if ($httpCode != 200) {
    if (property_exists($xml, "message")) {
        die($xml->message);
    }
    die("unexpected response ".$response);
}
Nikita Leshchev
  • 1,784
  • 2
  • 14
  • 26
Shai
  • 111
  • 1
  • 5

1 Answers1

0

Yes, you can. You have just to set content like this:

curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $fileContents);

And don't forget to set Content-type header:

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: image/jpeg']);

Or you can create request's body as string and send many files. Look at this answer: PHP Curl post with file attachment; custom content-type header

Nikita Leshchev
  • 1,784
  • 2
  • 14
  • 26