Я пытаюсь опубликовать изображения аватаров с моего сайта в 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)
);
Вам нужно установить $params
переменная в верхней части вашего скрипта, прежде чем использовать его. Это не приносит никакой пользы на дне.
Прочитайте документацию для 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
еще не был инициализирован.
Других решений пока нет …