2017-11-29 12 views
0

curlリクエストでjsonEncoded byte []としてpdfデータを取得しています。私はこのデータを作成してpdfとして保存する必要があります。jsonバイト[]をpdfファイルに保存するには

PHPでこれを行う方法を教えてください。

私のカールコードがある -

$ch = curl_init($url); 
curl_setopt_array($ch, 
array(CURLOPT_POST => TRUE, 
CURLOPT_RETURNTRANSFER => TRUE, 
CURLOPT_BINARYTRANSFER => TRUE, 
CURLOPT_HTTPHEADER => array( 'Content-Type: application/json'), 
CURLOPT_POSTFIELDS => json_encode($postData)) 
); 

$response = curl_exec($ch); 

$responseData = json_decode($response, TRUE); 

私はその結果として、私にこれを与え、responseDataを印刷しています -

JVBERi0xLjQKJeLjz9MKMSAwIG9iaiAKPDwKL01hdHJpeCBbMSAwIDAgMSAwIDBdCi9TdWJ0eXBlIC9Gb3JtCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMTUwMzc3Ci9SZXNvdXJjZXMgCjw8Ci9FeHRHU3RhdGUgCjw8Ci9HUzAgMiAwIFIKL0dTMSAzIDAgUgo+PgovQ29sb3JTcGFjZSAKPDwKL0NTMCA0IDAgUgo+PgovUHJvcGVydGllcyAKPDwKL01DMyAKPDwKL01ldGFkYXRhIDUgMCBSCj4+Ci9NQzIgCjw8Ci9NZXRhZGF0YSA2IDAgUgo+PgovTUMxIAo8PAovTWV0YWRhdGEgNyAwIFIKPj4KL01DMCAKPDwKL01ldGFkYXRhIDggMCBSCj4+Cj4+Ci9YT2JqZWN0IAo8PAovRm0xIDkgMCBSCi9GbTAgMTAgMCBSCi9GbTIgMTEgMCBSCj4+Ci9Gb250IAo8PAovVDFfMyAxMiAwIFIKL1QxXzIgMTMgMCBSCi9UMV8xIDE0IDAgUgovVDFfMCAxNSAwIFIKPj4KL1Byb2NTZXQgWy9QREYgL1RleHRdCj4+Ci9Gb3JtVHlwZSAxCi9UeXBlIC9YT2JqZWN0Ci9CQm94IFswIDAgNjEyIDc5Ml0KPj4Kc3RyZWFtCnic3L1bjy09ciX2/v2K/WgZ2KXknQQEAR5JbdiGgBmogXkYG4askWZst2TrMrDf5q+bwSCZychgXqoqso6MBvo7depUcW/uJNeK21r/+Nsf//d/tbz+0z//9se/+/vl9ef/12//7rc//qv/+6//4fUnf/LHf/ln/8Ofv5bXn/7pv/nzP3v99m9+/9vygv+p1/8JP6XKT/1e/a/wN7//u99S+WZ6Was+lA2vYPTHovMffv/3v/2H/+Z/Xkz4o7eO8Aff/gB/o9sf4L8u/9fBH2z+g4E/mPYH/Udv5eEPKv8hwB+W/AdT/2b4aZ1/nVq2P63zkirBH1z9aW3pDxn6F7q9TFV==

答えて

2

データの結果の文字列base64 - エンコードされたデータです。したがって、さらに処理するには、base64_decode($responseData); に電話する必要があります。

データが破損していない場合にファイルに保存する場合は、有効なPDFファイルを取得する必要があります。例えば

$responseData = json_decode($response, TRUE); 
// decode the base64 data 
$pdfData = base64_decode($responseData); 
// save the decoded data to a PDF file 
file_put_contents('/path/to/file.pdf', $pdfData); 

は、PDFファイルは、現在/path/to/file.pdfで保存する必要があります。


1)base64_decode() documentationを参照してください。

+0

thx Decent、それは動作します...しかし、あなたはどのように "base64_encode"でそれを知っていますか? – Atul

+0

体験。 :)データの最後にある '/'、 '+'、特に '=='は、base64をより頻繁に見た場合にはあきらめてしまいます。 Base64データがもう数回表示される場合は、おそらく即座に認識されます。 –

+0

thx ........... :) – Atul

0

このようなHTTPヘッダーを変更してください:

$ch = curl_init($url); 
curl_setopt_array($ch, 
    array(CURLOPT_POST => TRUE, 
    CURLOPT_RETURNTRANSFER => TRUE, 
    CURLOPT_BINARYTRANSFER => TRUE, 
    CURLOPT_HTTPHEADER => array('Content-type:application/pdf'), 
    CURLOPT_POSTFIELDS => json_encode($postData)) 
); 

$response = curl_exec($ch); 

$responseData = json_decode($response, TRUE); 
関連する問題