Upload Asset With API

I have been trying to create a form that will allow an image upload to the assets - used the PHP from here: https://discourse.getcockpit.com/t/file-asset-upload-trough-the-api/1208/6 but I cannot get it to work at all!

I have:


<form method="POST" id="formid" enctype="multipart/form-data">
<input type="file" name="myFile" id="myFile">
      <button class="upload">Upload</button><br>
<img class="preview-img">
    </form>

<?php

function uploadImage($api,$token,$file){

    $url     = 'http://mydomain.com/data/api/cockpit/addAssets?token=xxxxxxxxx';
    $cfile   = new CURLFile(realpath($file));
    $post    = ['files[]' => $cfile];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: multipart/form-data'));
    curl_setopt($ch, CURLOPT_TIMEOUT, 10000);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

    $result  = curl_exec ($ch);

    return $result;
};

?>


This retrurns a null result.

Can anyone point me in the right direction to het this working please!

Thanks

I tested the codes and I can confirmed this works 100%.
I think you might be confused with Ajax and PHP Curl. As I made two accordion toggles, one for AJAX implementation with JS. And another one for PHP Curl.

If you want a full version of uploading via PHP, please try this below code. Make sure both Cockpit API and your php server are https, and no CORS problem.

<?php

function uploadImage($api,$token,$file){

    $path    = '/api/cockpit/addAssets?token=';
    $url     = $api.$path.$token;
    $cfile   = new CURLFile(realpath($file));
    $post    = ['files[]' => $cfile];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: multipart/form-data'));
    curl_setopt($ch, CURLOPT_TIMEOUT, 10000);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

    $result  = curl_exec($ch);

    return json_encode($result);
};

$API   = 'http://mydomain.com';
$TOKEN = 'xxxxxxxxxxxxxxxxxxxxxx';

if($_FILES['myFile']){
    $FILE  = $_FILES['myFile']['tmp_name'];
    $data  = uploadImage($API,$TOKEN,$FILE);
    echo $data;
}

?>

<form method="POST" id="formid" enctype="multipart/form-data">
<input type="file" name="myFile" id="myFile">
      <button class="upload">Upload</button>
</form>