2016-02-23 3 views
1

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

$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 еще не был инициализирован.

+0

Спасибо. Я не передавал файл правильно. Когда я включил класс CURLFile(), он работал отлично. Массив $ params был определен в другом классе и передан моей оболочке curl. Я должен был поставить его выше, извините за путаницу. – user2626294

Смежные вопросы