Maison > Questions et réponses > le corps du texte
P粉8484421852023-08-29 09:16:59
C'est faux :
$postfields['data'] = json_encode($data);
Je trouve leur documentation API dérangeante.
Court tutoriel :
Il s'agit d'un simple formulaire HTML multipart/form-data :
Ci-dessous, je traduis ce formulaire en curl.
<form action="<url>" method="post" enctype="multipart/form-data"> <input type="text" name="name1" value="value1" > <input type="text" name="name2" value="value2" > <input type="text" name="name3" value="value3" > <button type="submit">submit</button> </form>
Pour envoyer ceci en curl, vous devez mettre les données du formulaire dans des champs de publication.
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, '<url>'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLINFO_HEADER_OUT, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "-----------------------------3303153187906175792551542585\r\nContent-Disposition: form-data; name=\"name1\"\r\n\r\nvalue1\r\n-----------------------------3303153187906175792551542585\r\nContent-Disposition: form-data; name=\"name2\"\r\n\r\nvalue2\r\n-----------------------------3303153187906175792551542585\r\nContent-Disposition: form-data; name=\"name3\"\r\n\r\nvalue3\r\n-----------------------------3303153187906175792551542585--\r\n"); $response = curl_exec($ch);
Voici les en-têtes de requête :
Content-Length: 408 Content-Type: application/x-www-form-urlencoded Accept: */* Host: my_curl_test_site.com X-Https: 1
Voici le texte de la demande :
-----------------------------3303153187906175792551542585 Content-Disposition: form-data; name="name1" value1 -----------------------------3303153187906175792551542585 Content-Disposition: form-data; name="name2" value2 -----------------------------3303153187906175792551542585 Content-Disposition: form-data; name="name3" value3 -----------------------------3303153187906175792551542585
J'encode le pdf en Base64 comme ceci :
$pdf = base64_encode(file_get_contents('example.pdf'));
Pour votre API PandaDoc
Il s'agit du champ du document, veuillez noter $pdf ci-dessus.
------BoundaryXXXXXXXXX Content-Disposition: form-data; name="file"; filename="Sample PandaDoc PDF with Field Tags.pdf" Content-Type: application/pdf; $pdf ------BoundaryXXXXXXXXX
Votre type de contenu devra peut-être être application/pdf;base64
Leurs exemples utilisent des données binaires.
Voici votre champ de données
------BoundaryXXXXXXXXX Content-Disposition: form-data; name="data" { "name": "My minimal document", "url": "https://example.com/path/to/mydocument.pdf", "recipients": [ { "email":"nobody@example.com" } ], "parse_form_fields": false } ------BoundaryXXXXXXXXX
Source : https://developers.pandadoc.com/docs/upload-and-send-a-local-pdf