PHP의 CURL을 통해 base64로 인코딩된 파일과 JSON 보내기
P粉139351297
2023-08-28 10:22:44
<p>CURL을 사용하여 Create Document from File API 호출(https://developers.pandadoc.com/reference/create-document-from-pdf)을 통해 PANDADOCS에 파일을 보내려고 합니다. </p>
<p>파일을 보내는 것 외에도 수신자 등이 포함된 데이터 개체를 JSON의 multipart/form-data 문자열의 일부로 보내야 합니다. 이 호출을 올바르게 설정하는 방법을 잘 모르겠고 API에서 "파일이라는 필드가 존재합니다"와 같은 다양한 오류 메시지가 계속 반환됩니다. </p>
<p>지금까지 제가 가지고 있는 것은 다음과 같습니다. </p>
<pre class="brush:php;toolbar:false;">공용 함수 createDocument()
{
$p = getmypid();
$m = "({$p}): PandaDoc::문서 생성: "
$postfields = 배열();
$postfields['name'] = $this->문서->이름;
$postfields['file'] = $this->document->file; //base 64로 인코딩된 PDF;
$수신자 = 배열(
정렬(
'이메일' => 'a.mcdoogle@test.com',
'first_name' => '앤드류',
'성' => '맥두글',
'역할' => '사용자',
'서명_주문' =>
)
);
$데이터 = 배열();
$data['recipients'] = $수신자;
$소유자 = 배열(
"이메일" > "john@example.com"
);
$data['owner'] = $소유자;
$postfields['data'] = json_encode($data);
$header = array("권한 부여: API-Key {$this->api_key}", "Content-Type: multipart/form-data", "accept" => "application/json") ;
$ch = 컬_초기화();
컬_setopt($ch, CURLOPT_RETURNTRANSFER, true);
컬_setopt($ch, CURLOPT_HTTPHEADER, $header);
컬_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
컬_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
cur_setopt($ch, CURLOPT_URL, $this->url);
컬_setopt($ch, CURLOPT_POST, 1);
컬_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$res = 컬_exec($ch);
if ($res === false) {
$errno = 컬_errno($ch);
$error = 컬_오류($ch);
error_log("{$m}cURL 오류: {$error} ({$errno})");
throw new Exception("{$m}cURL 오류: {$error} ({$errno})");
}
$httpcode = 컬_getinfo($ch, CURLINFO_HTTP_CODE);
컬_닫기($ch);
error_log("{$m}PandaDoc의 결과: {$res}");
$응답 = json_decode($res);
$응답을 반환합니다.
}</pre>
<p>내가 뭘 잘못하고 있는지 말해 줄 수 있는 사람 있나요? </p>
틀렸습니다:
으아악API 문서가 불안하다고 생각합니다.
간략한 튜토리얼:
으아악이것은 간단한 다중 부분/양식 데이터 HTML 양식입니다.
아래에서는 이 형식을 컬로 변환합니다.
이것을 컬로 보내려면 양식 데이터를 포스트 필드에 넣어야 합니다.
으아악요청 헤더는 다음과 같습니다.
으아악요청 내용은 다음과 같습니다.
으아악I Base64는 다음과 같이 PDF를 인코딩합니다.
으아악PandaDoc API용
문서 필드입니다. 위의 $pdf를 참고하세요.
으아악콘텐츠 유형은
application/pdf;base64
이어야 합니다. 그들의 예는 이진 데이터를 사용합니다.
이것은 귀하의 데이터 필드입니다
으아악출처: https://developers.pandadoc.com/docs/upload-and-send-a-local-pdf