PHP将字节数组转换为文件下载

时间:2013-08-09 14:04:35

标签: php pdf header download

我从第三方来源收到一个PDF格式的字节数组。我需要转换它,以便将文件下载到用户。我已经实现了下面的代码并且确实发生了下载,但它只是一个空白文件。

如果我回显$ fileToDownload的内容,它是正确的(以%PDF-等开头),数据就在那里。不知道我做错了什么。提前谢谢!

//GET CONTENT
$fileToDownload = $file->DownloadSignedDocumentResult;

//START DOWNLOAD
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fileToDownload));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: '.filesize($fileToDownload));
ob_clean();
flush();
readfile($fileToDownload);
exit;

echo $ fileToDownload

的内容

(此文件包含敏感信息,因此我只粘贴文件开头的一小段 - 希望这会有所帮助):

%PDF-1.4% 20 ob​​j&lt;&gt;流Dx a/s , v “ Z DƸ 1N ?ש W d A9 &gt; u Ҭ F;.0ҷB; S&安培;ݩ%] // @ GP XBI䃶8I IJcR和放大器;!] Q ZG” u7 Ζ uY{^ [} - E R. r u &lt; 8b a 9 Óㅅㅅ)1 IJ / zb vD VN vD | ȓ A 0 Ͻ o*m Z gz oH \ V *; \Ӌ= 9ycfTOKr“Ԁ | m' % ! @F | A j )9 g“ ^m Al 1 Bn C9ύl PO {] KX5 ^ÿ֡|щ/ qقU)FN ^ɞQ��6�Pc\e�۲]�8f� '�C[\v��U=���f��uIc�e�!�4^�ϻHCy��I��Gv(%�.I>��T�d!�l��׊R}�����B6k��=�C#���W.<���c��7���U���BI���! ����G�{�꾼L�2�q �I���Q�;;�P*�z�n��d尌(D�����aύ��7�����g�e���2����f�$��q�*�~+�H;R��t�Ofz����~|(�Jl��� l4�q�:�����w6.Z���ql݋�Њ+��hO��Ɔ�}<���pEs?�4З� h�07�����.���? ��s�F.�=�Z�Rz�9O�Hp��2��FR��nwH��{L {KAL福 g p @; 〜 G&gt;_n P TJӗ W ��$pYJ<�Es�[�3J4=��/i��T)�(�����U�r�Jn��I��}��g��a�t�Ufw+�|�k�pu��� ���#Oy�J��y�\cOu���0[Y�������l~W|�'3-�.�0�AW�*�|��z�l�e��t8іDZ��Mh4dvS���*j���nHn���*��8w��~_��%�S��j7�xM�l�������t�YD@�� � K�(�!�*��P��[�U��(�@����z1S�����c�.9&�4����v�j�[}��F�%}���XS����X6�㕣�X��lV ��<�M>��C(ڼo��t;���i *ʸ-ua��a$�:��ȶ���}�Mz�׻���&H4���&�'[�o�l�C�|�ēM�c��'m$ ��)S�)+��� ̤�f>T0��x�] �w?w%���+˦�����,������]F aڲ : b 3f d @ KgkL5VEi ^ cG_I H5)$ Ap, : UӧR J8~ | Ev cUt= iJ)* j MOB\ m c ~Q:〜 1 Ev z H# H F+:G}掺 f d f&lt; &gt; $ N m ; .S] / S R3 +'Ң1{ 6 = G-v |&GT?; X VM “” ̔QC.Al:R |2uĦё| ^,U] 48 ֫ &amp;T~2 x'5 ᫏{ 8ϋ ϋ WH s d2 1 n ?l Ed T T' Qm “Y3ԾiZ 9 / G!$ Mj ) m{m �R4_k7�c�a�����"m q~N2b�rí�%�῔��4�����0�+y���㳯̇O�!���.�F�\qZ0�fSZ� �Α�֩��"���ڐYNJ��{�{W���4ԝC�rg���/�-(C�<�O@��oS�,k�ǡ�*�PXz��o���%PfO0�@���l��t�oyw�a@(���A���!�OK��o��½q�8�DZ�Y�X���E�5���8ê��[5�Ƌ���M�)����t~��w��h�P�� u? w kĵ ]“ *gV n B 4iw- 29 6} Se ;v m F [|ӥ x U $&gt;M a vij ܌ v ~] ocf &lt; L 䍞 J#( nik ث R u “ N 1 } y T S r + �b�(9{7�����x��ux�ݚ}�6� �C�=޻�����v�X�g���;9t�b_���l��am�ODQ��|���,�o禗�@�hkuݑ����t�d�ڐ��F�~*vh2��[���՞=$X� �pqH�_�7Ƒ�&�O�gǹ��I�]F}[%K�0�YN���Y�}����$���˱��i�~�Jk�*�c+{��Ђ���͉�v��u�9R����$�a�\;�N��쮴Tո���7�SMG|��Î�y�U�]]'Z�,MB��H�g@�&�rc��E0��i�����үmy���ONt��)(���)�I�D��;_� ŭ���N�Ks<(���!hE_�0"� ;U�{e2C�X�+��#|D���"�_#�]�Xu�6,Z��2���wNy�(0�z���4�;pn�<� zw pD 1Clh f S!Q C6 1G ' P “( : F |aY h wL o G tq Q ,Hr %( Z J >ŘŢz u j #kг z cl { { xRuJn 6 v H7v ocr r L %? -&amp; [r ƢyF蒦O v a է {{ 1}}一个+&安培; W'8_ebGI |。 \ 92c V [ * Q {( a@Ğ ك j Ut S FF F 0C L��Y�Z�@��n?�i�f>Fh��B��w����}(�u�zm�~}�����!���&�n���]�- ��h9������na�bi�wS��q n#8��Y~��b=�441_����'c�ʠ=�b��wTj2�N*MO�$�}8["ƫg�6}�E�3�,�KE������_�e����dj�O3�n�7u]�<�m���_� uS h vI+ zC n $&amp; ,@l H (naKf f ndndstreamendobj 6 0 obj&lt;&gt; endobj 7 0 obj&lt;&gt; endobj 8 0 obj&lt;&gt; endobj 9 0 obj&lt;&gt; endobj 10 0 obj / Creator&lt; 1408C602&gt; / Keywords&lt;&gt; / ModDate&lt; 075D8656FF7B0721B23ACA5714F625E800F1D85A3259B0&GT; /生产&LT; 0E06D746811B1741A233CB4F1FE822FD7CB48D0F7613B7E5483D7D79CCF00F2321&GT; /标题&LT; 0E0ED714A13B587FF622AC0E55A236F00D8289116D39F6CC2C2B7A5082C2052938040A6AC8D9&GT;&GT;&GT; endobj 12 0的obj&LT;&GT; endobj 13 0的obj&LT;&GT; endobj 32 0的obj&LT;&GT;流_ r ] O&LT; WP = 77 * [= { - K | L - tiÞPr鍪4 [ p b- 8բ weZ1k - {)i = *l K ~ &lt;. 8_ h + x&gt; stream Q�"[�-�c��ozĖn¹#�b\���ו�Sn�i����cv��WS��WXi �hc4ŋ�ҳ� �3��/S(&�a�+����9�J����=�u�^N|4�]F��eBa]a� /M��uL���N����WK��dg�Z�^8gH��zEtqhB o<�ӣd�6�������_�B|������ ���XӑH^�q�7��ަ(���}���h�AN� L [J @kܥ#SP!ZOI {AуƒA/ TAL” GW > + c - V i 6IW -\R l 4 f ~ ' кFuA ders3 ; h ^ \˴L- + E G(?s y | q ͟L #]J [p |Z q[ G A ; \ 3Y c vc tk K a t rm( F ĝRD D 6 efQ 3t Wn y*j~ P vkt 6“ 1 a׆vX ?= mv 7, / J + E / N UyMk k2 / A e “C, RG Ӑ JU JH ]Q endstreamendobj 35 0 obj&lt;&gt;

1 个答案:

答案 0 :(得分:1)

据我所知,$ fileToDownload包含PDF的二进制数据,所以你应该

echo $fileToDownload;

也改变了:

header('Content-Length: '. strlen($fileToDownload));