PHP fpassthru-如何在不在屏幕上打印的情况下输出文件数据?
如何在不在屏幕上打印的情况下输出文件数据PHP fpassthru-如何在不在屏幕上打印的情况下输出文件数据?,php,fopen,Php,Fopen,如何在不在屏幕上打印的情况下输出文件数据 $file = "G:/...7F0D23C62002546097485FC518222504D29693FC8D2FCBB7.tgz"; // Open the file in a binary mode $fp = fopen($file, 'rb'); // Dump the tar and stop the script $success = fpassthru($fp); fclose($fp); if(!$success) {
$file = "G:/...7F0D23C62002546097485FC518222504D29693FC8D2FCBB7.tgz";
// Open the file in a binary mode
$fp = fopen($file, 'rb');
// Dump the tar and stop the script
$success = fpassthru($fp);
fclose($fp);
if(!$success) {
throw new Exception('Unable to downlonad');
} else {
echo 'success!';
}
结果,
��M�U�供应商管理组织�6.�O��\%��W�&0Xۤmծ�阿兹&�'�^C����100万美元��ꮪ���O> ��>�CU�公里��G���代码>A0>C���LhH�&�<代码>���W��#�W�吕�祖尔��~_��ŝg�^{Ww�0�+��%J�/A.�!��公元��8"�P��3.�K�D�$ �K�v�����,Uf{}n��6EW�}�ԧϭ�@G����������X?aI�$¶��1.��s&3�8%���#�s�/:�Z
�80������s��日本脑炎��撟O�*�O
@
�5^.{,五��.�[�����伊兹���4e1.u�下午�\��穆˅�高炉��Y�F���k>���C���Z�η]i�ت)i�^��JYz֪2z�=����L��^W��|����^'�}亩v�;6y``��]A.�� ����ߗ�6_w���镁�#��
�����۟0W��W���v�L����4.�DS)b�""�3F9��H��
ƶ&t%���我�,��?��A.�i、 m�� e��̗���䒢迪恩*�ǒ=W��Q�D�kB?#h“�Q <9�P�$���O | 8�“菲,�L��?���&�����[��K�5gB������&}�^-��~��^�太太��p�����R�F�__��?����:#��3.��Z=�!s{X���[��.帕�H�Tƌ��˺�v��'}�7.���֫�qd)ӝ��T����7.�����(成功
但我只是想
成功
是否可能?函数从打开的文件中的当前位置读取所有数据,直到EOF,并将结果写入输出缓冲区
此函数返回传递的字符数或失败时的FALSE
小贴士及注意事项
注意:在Windows上使用二进制文件时,请记住以二进制模式打开文件
提示:调用,如果您已经写入文件,则将文件指针设置为文件的开头
提示:如果您只想将文件内容转储到输出缓冲区,而不首先修改它,请使用该函数
这是一个老问题,但也许答案对某些人有用
ob_start();
var_dump(fpassthru($fp));
$success = ob_get_clean();
…然后检查$success以查看“success!”文本。您可以通过设置适当的标题强制下载tar文件:
$file = "./test.tgz";
// Set headers
header("Content-Type: application/x-tar");
header("Content-Disposition: attachment; filename=test.tgz");
header("Content-Length: " + filesize($file));
header("Content-Transfer-Encoding: binary");
// Open the file in a binary mode
$fp = fopen($file, 'rb');
// Dump the tar and stop the script
$success = fpassthru($fp);
fclose($fp);
PHP header()函数文档:
将结果写入输出缓冲区
-这是什么意思?我知道这一点,并且已经通读了!