FPDF文件--->通过 CURL 自动发送而不是文件上传 [英] FPDF file ---> send via CURL automatically NOT with file upload

查看:22
本文介绍了FPDF文件--->通过 CURL 自动发送而不是文件上传的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经成功地从我提交的表单中生成了一个 FPDF pdf 文件.然后我通过 CURL 将它发布到 API 端点.这个文件"显示在 CRM 系统内应该去的地方,但我无法打开它.我相信这根本不是文件,它没有被正确存储/抓取.

Hi I have managed to successfully generate a FPDF pdf file from my form submission. I have then POSTED it via CURL to an API endpoint. This 'file' shows inside the CRM system where supposed go but I cannot open it. I believe this is not the file at all and it is not being passed stored/grabbed properly.

谢谢

见下面的代码:

$noteTitle = (isset($_POST['noteTitle']) ? $_POST['noteTitle'] : null);
$noteBody = (isset($_POST['noteBody']) ? $_POST['noteBody'] : null);

require("fpdf/fpdf.php");
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont("Arial", "B", 16);
$pdf->Cell(0,100, "Note Title: {$noteTitle} \n", 1, 0, 'C');
$pdf->Cell(0,100, "Note Body: {$noteBody}", 1, 0, 'C');
$filename="testFPDF.pdf";
$pdf->Output($filename,'F');  

$headers2 = array(
    "authorization: Basic xxx",
    "content-type: multipart/form-data",
    "cache-control: no-cache",
    "postman-token: xxx"
);   

$file_name_with_full_path = 'C:/localhost/insightly-php/testFPDF.pdf';
$timeout = 30;
$target_url = "https://api.insight.ly/v2.1/Notes/?c_id=" . $noteID . "&filename=" . $filename;
$parameters =  array(
    'FILE_ATTACHMENTS' => '@' . $file_name_with_full_path,
    'CONTENT_TYPE' => 'application/pdf'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers2);
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
//curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"POST");    
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
//curl_setopt($ch, CURLOPT_ENCODING,"");
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
//curl_setopt($ch, CURLOPT_MAXREDIRS,10);
//curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false );
//curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
//curl_setopt( $ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC );
curl_exec($ch);
curl_close ($ch);

文件内容为:

--------------------------xxxxxxxxxxxxxxxx
Content-Disposition: form-data; name="FILE_ATTACHMENTS"

@C:/localhost/insightly-php/testFPDF.pdf
--------------------------xxxxxxxxxxxxxxxx--

推荐答案

我设法让它工作了.我不确定这是否是最好的方法,但它奏效了.

Hi I managed to get this working. I am not sure if this is the best way of doing it but it worked.

是将fpdf的输出转换为字符串 $doc = $pdf->Output($filename,'S');然后在发送 curl var_dump(json_decode($doc, true)) 之前对其进行解码;&还将标题内容类型设为application/pdf"

It was to convert the output of the fpdf as a string $doc = $pdf->Output($filename,'S'); then decode it before sending the curl var_dump(json_decode($doc, true)); & also make the header content type "application/pdf"

$noteTitle = (isset($_POST['noteTitle']) ? $_POST['noteTitle'] : null);
$noteBody = (isset($_POST['noteBody']) ? $_POST['noteBody'] : null);

//FPDF
require("fpdf/fpdf.php");
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont("Arial", "B", 14);
$pdf->Cell(0,50, "Note Title: {$noteTitle}", 1, 0, 'C');
$pdf->Cell(0,50, "Note Body: {$noteBody}", 1, 0, 'C');
$filename="testFPDF.pdf";
$doc = $pdf->Output($filename,'S');     

///////////FIRST POST REQUEST////////////
$orgID = 70239678;
$addNote = (object)array(        
        "TITLE" => "$noteTitle",
        "BODY" => "$noteBody ",
        "LINK_SUBJECT_ID" => "$orgID",
        "LINK_SUBJECT_TYPE" => "Organisation"              
);   
$addNote = $i->addNote($addNote); 

///////////GET NOTE ID////////////
$orgNotes = $i->getNotes(array("orderby" => 'DATE_CREATED_UTC'));
foreach ($orgNotes as $note) {        
      $noteID = $note->NOTE_ID;          
}

///////////SEND ATTACHEMENT////////////         
$headers2 = array(
    "authorization: Basic xxx",
    "content-type: application/pdf",
    "cache-control: no-cache",
    "postman-token: xxx"
);       

$target_url = "https://api.insight.ly/v2.1/Notes/?c_id=" . $noteID . "&filename=" . $filename;

var_dump(json_decode($doc, true));
$parameters = array(
    'FILE_ATTACHMENT' => $doc  
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers2);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_exec($ch);
curl_close ($ch);

如果有人感兴趣,这是我使用文件上传而不是 fpdf 发送解决方案的解决方案.多部分表单文件上传POST PHP cURL

If anyone is interested this is my solution for using file upload instead of the fpdf send solution. Multipart form file upload POST PHP cURL

这篇关于FPDF文件--->通过 CURL 自动发送而不是文件上传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆