Hantar fail berkod base64 dan JSON melalui CURL dalam php
P粉139351297
2023-08-28 10:22:44
<p>Saya cuba menggunakan CURL untuk menghantar fail ke PANDADOCS melalui panggilan Cipta Dokumen daripada Fail API: https://developers.pandadoc.com/reference/create-document-from-pdf. </p>
<p>Selain menghantar fail, saya juga perlu menghantar objek data yang mengandungi penerima dsb. sebagai sebahagian daripada rentetan berbilang/bentuk-data dalam JSON. Saya tidak pasti cara untuk menyediakan panggilan ini dengan betul dan saya terus menerima pelbagai mesej ralat yang dikembalikan daripada APInya, seperti "Medan bernama fail wujud" </p>
<p>Inilah yang saya ada setakat ini: </p>
<pre class="brush:php;toolbar:false;">public function createDocument()
{
$p = getmypid();
$m = "({$p}): PandaDoc::buat dokumen: ";
$postfields = array();
$postfields['name'] = $ini->dokumen->nama;
$postfields['file'] = $this->document->file; //base 64 dikodkan PDF
$penerima = tatasusunan(
tatasusunan(
'e-mel' => 'a.mcdoogle@test.com',
'first_name' => 'Andrew',
'last_name' => 'Mcdoogle',
'role' => 'pengguna',
'menandatangani_pesanan' =>
)
);
$data = tatasusunan();
$data['recipients'] = $recipients;
$owner = array(
"e-mel" ="john@example.com"
);
$data['owner'] = $owner;
$postfields['data'] = json_encode($data);
$header = tatasusunan("Keizinan: API-Key {$this->api_key}", "Content-Type: multipart/form-data", "accept" => "application/json") ;
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, palsu);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$res = curl_exec($ch);
jika ($res === palsu) {
$errno = curl_errno($ch);
$error = curl_error($ch);
error_log("{$m}cURL error: {$error} ({$errno})");
buang Exception baharu("{$m}ralat cURL: {$error} ({$errno})");
}
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
error_log("{$m}Hasil daripada PandaDoc: {$res}");
$respons = json_decode($res);
pulangkan $respon;
}</pre>
<p>Bolehkah sesiapa memberitahu saya apa yang saya lakukan salah? </p>
Ini salah:
Saya mendapati dokumentasi API mereka mengganggu.
Tutorial Ringkas:
Ini ialah borang HTML berbilang bahagian/borang-data yang mudah:
Di bawah saya menterjemahkan borang ini kepada curl.
Untuk menghantar ini dalam curl anda perlu meletakkan data borang ke dalam medan pos.
Berikut ialah tajuk permintaan:
Ini adalah teks permintaan:
I Base64 mengekod pdf seperti ini:
Untuk API PandaDoc anda
Ini adalah medan dokumen, sila ambil perhatian $pdf di atas.
Jenis kandungan anda mungkin perlu
application/pdf;base64
Contoh mereka menggunakan data binari.
Ini adalah medan data anda
Sumber: https://developers.pandadoc.com/docs/upload-and-send-a-local-pdf