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