【发布时间】:2018-10-22 19:46:11
【问题描述】:
我们有一个从 ServiceNow 导出的 XML 文件,我们正在尝试将其导入到我们的自定义 PHP 应用程序中。
每个附件<sys_attachment> 被分割成块<sys_attachment_doc>,这些块由<position> 元素排序。
<sys_attachment>
<chunk_size_bytes>734003</chunk_size_bytes>
<compressed>true</compressed>
<content_type>application/pdf</content_type>
<encryption_context display_value="" />
<file_name>Filename.pdf</file_name>
</sys_attachment>
<sys_attachment_doc>
<data>[BASE64 ENCODED STRING HERE]</data>
<length>[STRING LENGTH]</length>
<position>0</position>
</sys_attachment_doc>
<sys_attachment_doc>
<data>[BASE64 ENCODED STRING HERE]</data>
<length>[STRING LENGTH]</length>
<position>1</position>
</sys_attachment_doc>
我们尝试过将字符串和 base64_decoding 结合起来,但无济于事。
<?php
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="servicenow.pdf"');
//echo base64_decode($chunk0.$chunk1);
echo base64_decode($chunk0).base64_decode($chunk1);
?>
我们找不到有关如何将这些附件转换为 ServiceNow (PHP) 之外的文件的任何文档。在解码字符串并转换为文件(PDF)之前是否需要完成额外的步骤
编辑:我设法使用@Joey 回答来解决它。我base64_decode这些块然后组合它。组合的字符串实际上是 gzip 压缩的。我们使用 gzdecode() 来生成 PDF。
$attachment = base64_decode($chunk0).base64_decode($chunk1);
echo gzdecode($attachment);
【问题讨论】:
-
先合并base64字符串再解码不是更有意义吗?
标签: php xml pdf base64 servicenow