Php 如何从解码的base64字符串获取pdf
如何从这个数组下载pdf,这就是我当前的代码,我无法保存pdf。谢谢你的帮助。 这是我当前的代码:Php 如何从解码的base64字符串获取pdf,php,base64,encode,Php,Base64,Encode,如何从这个数组下载pdf,这就是我当前的代码,我无法保存pdf。谢谢你的帮助。 这是我当前的代码: $result = $SoapClient4->getContractBill($contractId, 2019, '09'); var_dump($result); #$base64data = preg_replace('#data:application/pdf/[^;]+;base64,#', '', $result['ContractBills'][0]['Raw
$result = $SoapClient4->getContractBill($contractId, 2019, '09');
var_dump($result);
#$base64data = preg_replace('#data:application/pdf/[^;]+;base64,#', '', $result['ContractBills'][0]['RawFileData']);
$decoded = base64_decode($base64);
$file = 'invoice.pdf';
$file_put_contents($file, $decoded);
$pdf_decoded = base64_decode($base64data);
$pdf = fopen('test.pdf','w');
fwrite($pdf,$pdf_decoded);
fclose($pdf);
试试这个:
- 移除“base64”(7个字符)
- 解码字符串
- 写入文件
$result = $SoapClient4->getContractBill($contractId, 2019, '09');
file_put_contents('invoice.pdf', base64_decode(substr($result['ContractBills'][0]->rawFileData, 7)));
仅此而已。确保以正确的路径写入invoice.pdf
一个衬里的作用与以下相同:
$result = $SoapClient4->getContractBill($contractId, 2019, '09');
$file = 'invoice.pdf';
$base64raw = $result['ContractBills'][0]->rawFileData;
$base64 = substr($base64raw, 7);
$decoded = base64_decode($base64);
file_put_contents($file, $decoded);
因此,您可以决定您喜欢哪种方式。您需要使用
rawFileData
并在开始时删除base64,
。@MarkusZeller有没有一个我应该如何做的示例?如果我的答案对您有效,请标记为正确。感谢@Markus的帮助,我有点困惑,我怎么把它放在我的代码上?我插入了所有的最后一位代码,我得到了这个错误:未捕获错误:无法将stdClass类型的对象用作数组inAh,是的,$result['ContractBills']持有一个带有对象的数组。我会更新答案。
$result = $SoapClient4->getContractBill($contractId, 2019, '09');
$file = 'invoice.pdf';
$base64raw = $result['ContractBills'][0]->rawFileData;
$base64 = substr($base64raw, 7);
$decoded = base64_decode($base64);
file_put_contents($file, $decoded);