function uploadToImageKit($fileUrl, $fileName, $privateKey)
{
$ch = curl_init('https://upload.imagekit.io/api/v1/files/upload');
curl_setopt_array($ch, \[
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_USERPWD => $privateKey . ":", // ✅ BEST WAY (no manual base64)
CURLOPT_POSTFIELDS => \[
'file' => $fileUrl, // ✅ URL works directly
'fileName' => $fileName,
'folder' => '/uploads',
'useUniqueFileName' => true, // ✅ boolean
\],
\]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
if ($curlError) {
echo "cURL Error: $curlError<br/>";
return null;
}
$decoded = json_decode($response, true);
if ($httpCode !== 200) {
echo "ImageKit Error (HTTP $httpCode): " . ($decoded\['message'\] ?? $response) . "<br/>";
return null;
}
return $decoded;
}
this is my code