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

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

问题描述

您好我已经设法成功地生成从我的表单提交一个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 =htt​​ps://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 =htt​​ps://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屋!

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