Как использовать PHP / Curl, чтобы опубликовать файл в спокойной API?

Я пытаюсь опубликовать изображения аватаров с моего сайта в pipedrive с использованием PHP / Curl. Документы требуют кодирования multipart / form-data. Я не могу получить реальный файл для публикации. Я пробовал несколько способов отправить файл из различных инструкций, но каждый раз, когда pipedrive возвращает «файл не прикреплен». Я вставил свою текущую попытку ниже, какие-нибудь идеи? Или, может быть, просто указать мне пример, который будет работать?

$ch = curl_init();
$timeout = 10;
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_INFILESIZE, $params['filesize']);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array('Content-Type:multipart/form-data')
);
$data = curl_exec($ch);

$params = array(
'id' => $PDid,
'file' => plugin_dir_path( dirname( __FILE__ )).'tmp/'.$filename,
'filesize' => filesize(plugin_dir_path( dirname( __FILE__ )).'tmp/'.$filename)
);

1

Решение

  1. Вам нужно установить $params переменная в верхней части вашего скрипта, прежде чем использовать его. Это не приносит никакой пользы на дне.

  2. Прочитайте документацию для CURLFile и следуйте примеру там.

В частности, вы должны установить соответствующие параметры файла, как это:

// Create a CURLFile object
$cfile = new CURLFile('cats.jpg','image/jpeg','test_name');

// Assign POST data
$params = array('test_file' => $cfile);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

В коде, который вы разместили, похоже, что вам не хватает CURLOPT_POST, И ваш CURLOPT_POSTFIELDS не работает, потому что, как я уже сказал $params еще не был инициализирован.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]