FPDF文件--->通过卷曲自动发送与文件上传 [英] FPDF file ---> send via CURL automatically NOT with file upload
问题描述
您好我已经设法成功地生成从我的表单提交一个FPDF PDF文件。我已经然后通过卷曲贴吧的API端点。
该文件显示了CRM系统,应该进去,但我不能打开它。
我相信这是不是在所有的文件,它不会被传递存储/正常一把抓。
感谢
见下文code:
$ noteTitle =(使用isset($ _ POST ['noteTitle'])$ _ POST ['noteTitle']:NULL);
$ noteBody =(使用isset($ _ POST ['noteBody'])$ _ POST ['noteBody']:NULL);要求(FPDF / fpdf.php);
$ PDF =新FPDF();
$ PDF - > AddPage();
$ PDF->并入setfont(Arial字体,B,16);
$ PDF - >细胞(0,100,注意标题:{$ noteTitle} \\ n,1,0,'C');
$ PDF - >细胞(0,100,注意身体:{$ noteBody},1,0,'C');
$文件名=testFPDF.pdf;
$ PDF - >输出($文件名,'F');$ headers2 =阵列(
授权:基本XXX,
内容类型:多重/表单数据
缓存控制:无缓存
邮差令牌:XXX
);$ file_name_with_full_path =C:/localhost/insightly-php/testFPDF.pdf';
$超时= 30;
$ target_url =https://api.insight.ly/v2.1/Notes/?c_id=。 $ noteID。与&文件名=。 $文件名;
$参数=阵列(
FILE_ATTACHMENTS'=> @。 $ file_name_with_full_path,
CONTENT_TYPE'=> 应用程序/ 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,$参数);
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
内容处置:表格数据; NAME =FILE_ATTACHMENTS@C:/localhost/insightly-php/testFPDF.pdf
-------------------------- xxxxxxxxxxxxxxxx--
您好我设法得到这个工作。我不知道这是否是做的最好的方式,但它的工作。
这是对FPDF的输出转换为字符串$文档= $ PDF->输出($文件名,S);发送卷曲的var_dump(json_de code($ doc的,真正的)),在此之前德code它; &安培;也使头部的内容类型application / PDF
$ noteTitle =(使用isset($ _ POST ['noteTitle'])$ _ POST ['noteTitle']:NULL);
$ noteBody =(使用isset($ _ POST ['noteBody'])$ _ POST ['noteBody']:NULL);// FPDF
要求(FPDF / fpdf.php);
$ PDF =新FPDF();
$ PDF - > AddPage();
$ PDF->并入setfont(Arial字体,B,14);
$ PDF - >细胞(0,50,注意标题:{$ noteTitle},1,0,'C');
$ PDF - >细胞(0,50,注意身体:{$ noteBody},1,0,'C');
$文件名=testFPDF.pdf;
$ doc的= $ PDF->输出($文件名,'S');/////////// FIRST POST请求////////////
$ ORGID = 70239678;
$ addNote =(对象)阵列(
TITLE=> $ noteTitle
身体=> $ noteBody
LINK_SUBJECT_ID=> $ ORGID
LINK_SUBJECT_TYPE=> 组织
);
$ addNote = $ I-GT&; addNote($ addNote);/////////// GET注意ID ////////////
$ orgNotes = $ I-GT&; getNotes(阵列(排序依据=>'DATE_CREATED_UTC'));
的foreach($ orgNotes为$注){
$ noteID = $注意 - > NOTE_ID;
}///////////发送ATTACHEMENT ////////////
$ headers2 =阵列(
授权:基本XXX,
内容类型:application / PDF
缓存控制:无缓存
邮差令牌:XXX
);$ target_url =https://api.insight.ly/v2.1/Notes/?c_id=。 $ noteID。与&文件名=。 $文件名;后续代码var_dump(json_de code($ doc的,真正的));
$参数=阵列(
FILE_ATTACHMENT'=> $ doc的
);$ CH = curl_init();curl_setopt($ CH,CURLOPT_HTTPHEADER,$ headers2);
curl_setopt($ CH,CURLOPT_POST,1);
curl_setopt($ CH,CURLOPT_POSTFIELDS,$参数);
curl_setopt($ CH,CURLOPT_URL,$ target_url);
curl_setopt($ CH,CURLOPT_RETURNTRANSFER,1);curl_exec($ CH);
curl_close($ CH);
如果有人有兴趣,这是我的使用,而不是FPDF发送解决方案的文件上传解决方案。 <一href=\"http://stackoverflow.com/questions/34604602/multipart-form-file-upload-post-php-curl/34624025#34624025\">Multipart表单文件上传POST PHP卷曲
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.
Thanks
See below code:
$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);
File contents are:
--------------------------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.
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);
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文件---&GT;通过卷曲自动发送与文件上传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!