使用标题在php中下载zip文件

时间:2012-10-06 16:56:08

标签: php zip

我有以下PHP脚本来下载zip文件:

header("Content-length:".filesize($archive_file_name));
header('Content-Type: application/zip'); // ZIP file
header('Content-Disposition: attachment; filename="downloadpackage.zip"');
header('Content-Transfer-Encoding: binary');
readfile($archive_file_name);
exit();

但它并没有强制下载zip文件,它显示了许多不寻常的字符,如下所示:

PK [FA#X $ d:\ voice_06101243342pm014771957.wav | S] ybCI \ {2mM'Eibu2 \ @B ܋{ 6b#$ H,\ @ : Z (q ә Y q , d y O TP $PĽgw}} - [R֯[7 U“W | O7 / Z'^ZҢZTZ\ S | N cX8cX8cX8cX8cX82,AOA * =ە做:|ˉ'rb| L2 * ^:?] q׵} / \ SZ G [=&

我还在header函数之前放置了以下代码:

if (headers_sent()) 
{
  // HTTP header has already been sent
  return false;
}
// clean buffer(s)
while (ob_get_level() > 0)
{
   ob_end_clean();
}

这个忽略显示那些字符和zip也不强制下载。我无法弄清楚问题,请帮助我,我们将不胜感激。

3 个答案:

答案 0 :(得分:0)

PK[�FA����#�X$D:\voice_06101243342pm014771957.wav�|
�s]�y���b�CI\��{2m��M'�Eibu2\@B��܋{� 6b# 
$H,\@��:��Z�(q�����ә���Y��q�����,�     ���� d��y��O�tp$PĽg��w}��}
�r֯[7�u�"w���|o�7/Z��ˋ^Z������Ң�ZTZ\S|N����c�X8��c�X8��c�X8��c�X8��c�X8���۲,��a�oA*
=ە���do:��|ˉ'rb�|�L2�*^�:q׵}/��\�s�Z?��G�[��=ϗ?

这是您的zip文件。

您正在接收一个zip文件并且没有任何错误,您只需要更正您的php处理脚本,因为它显然是以纯文本/字符串处理它。

注意开始时PK,zip文件以'PK`数据开头。通过使用十六进制编辑器打开任何zip文件来测试自己。

答案 1 :(得分:0)

尝试将此添加到标题中:

header('Content-Description: File Transfer');

答案 2 :(得分:0)

以下是我用来下载文件的简单功能:

function _download ($file_name) {
  $src = fopen($this->download_path . $file_name,'r') or die("\n\n ========= Could not download $file_name\n");
  $dest = fopen($file_name,'w');
  stream_copy_to_stream($src, $dest);
}