Curl POST вложение

Мне нужно прикрепить PDF-файл с локального диска и опубликовать его в API с помощью PHP CURL.

Здесь Документация по RingCentral FaxOut API

$url = "https://service.ringcentral.com/faxapi.asp";

$data = array(

'Username' => 'XXXXXXXXX',
'Password' => 'XXXXXXXXX',
'Recipient' => 'XXXXXXXXXX|Navneet',
'Coverpage' => 'Default',
'Coverpagetext' => 'Testing Faxout API ',
'Resolution' => 'High',
"Sendtime"   => date('d:m:y H:i:s'),
'Attachment' => file_get_contents(PATH_TO_FILE)

);

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch,CURLOPT_POST, count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);

$result = curl_exec($ch);

API не возвращает ничего в ответ. Я думаю, что я не отправляю вложение должным образом. Вложение должно быть в двоичном потоке. Я попытался base64_encode, но безуспешно.

Как показано в примере тела запроса, заголовок для вложения должен быть таким

Content-Disposition: form-data; name="Attachment"; filename="C:\example.doc"<Document content is here>
-----------------------------7d54b1fee05aa

1

Решение

Вы можете отправить что-нибудь в API с CURL, $doc в моем примере это все, что вы хотите опубликовать, это может быть файл json_encoded, изображение base64_encoded или pdf или что-то еще.

$baseUri = https://service.ringcentral.com/faxapi.asp;

$doc = file_get_contents(PATH_TO_FILE);

$ci = curl_init();
curl_setopt($ci, CURLOPT_URL, $baseUri);
curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ci, CURLOPT_FORBID_REUSE, 0);
curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ci, CURLOPT_POSTFIELDS, $doc);

// also you can specify any specific header like this :

$h1['Content-Disposition'] =  'Content-Disposition'. ': ' . 'form-data'; // headers are key-value pairs right ?

curl_setopt($ci, CURLOPT_HTTPHEADER, array_values($h1));  // you can use this line for each header as a new key-value pair

$h2['name'] =  'name'. ': ' . 'Attachment';
curl_setopt($ci, CURLOPT_HTTPHEADER, array_values($h2));
$h3['filename'] =  'filename'. ': ' . 'C:\example.doc';
curl_setopt($ci, CURLOPT_HTTPHEADER, array_values($h3));

$response = curl_exec($ci);

** ПРИМЕЧАНИЕ **: хорошая идея, прежде всего, проверить, работает ли ваша функция file_get_contents:
так в другом php файле проверьте это:

echo file_get_contents(PATH_TO_FILE);

Посмотрите, правильно ли оно отражается

0

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

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

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