簡體   English   中英

使用標頭在 php 中下載 zip 文件

[英]download zip files in php using headers

我有以下用於下載 zip 文件的 PHP 腳本:

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] 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 [ =ϗ?

我還在 headers 函數之前放置了以下代碼:

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

忽略顯示那些字符和 zip 也不會強制下載。 我無法弄清楚問題,請幫助我,將不勝感激。

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 文件來測試自己。

嘗試將此添加到您的標題:

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

這是我用來下載文件的簡單函數:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM