Код выглядит так:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "example.com");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@' . 'img/image.png'));
$result = curl_exec($ch);
echo $result;
curl_close($ch);
В чём проблема?
Как я понял, проблема связана с тем, что cURL не оправляет файл. Ниже, варианты ее решения.
Вариант 1Для php >=5.6, включите поддержку префикса @ для загружаемых файлов в CURLOPT_POSTFIELDS.
Для этого нужно указать опцию CURLOPT_SAFE_UPLOAD.
Начиная с версии php 5.6, эта опция по умолчанию - TRUE (выключено):
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@' . 'img/image.png'));
Вариант 2
Для php >=5.5, 7 используйте объект CURLFile (начиная с версии php7 опция CURLOPT_SAFE_UPLOAD удалена):
$image = new CURLFile('img/image.png');
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => $image);
Продвижение своими сайтами как стратегия роста и независимости