>  Q&A  >  본문

PHP의 CURL을 통해 base64로 인코딩된 파일과 JSON 보내기

<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>
P粉139351297P粉139351297441일 전572

모든 응답(1)나는 대답할 것이다

  • P粉848442185

    P粉8484421852023-08-29 09:16:59

    틀렸습니다:

    으아악

    API 문서가 불안하다고 생각합니다.

    간략한 튜토리얼:
    이것은 간단한 다중 부분/양식 데이터 HTML 양식입니다.
    아래에서는 이 형식을 컬로 변환합니다.

    으아악

    이것을 컬로 보내려면 양식 데이터를 포스트 필드에 넣어야 합니다.

    으아악

    요청 헤더는 다음과 같습니다.

    으아악

    요청 내용은 다음과 같습니다.

    으아악

    I Base64는 다음과 같이 PDF를 인코딩합니다.

    으아악

    PandaDoc API용


    문서 필드입니다. 위의 $pdf를 참고하세요.

    으아악

    콘텐츠 유형은 application/pdf;base64
    이어야 합니다. 그들의 예는 이진 데이터를 사용합니다.

    이것은 귀하의 데이터 필드입니다

    으아악

    출처: https://developers.pandadoc.com/docs/upload-and-send-a-local-pdf

    회신하다
    0
  • 취소회신하다