2

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

また、ヘッダー関数の前に以下のコードを配置しました。

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

これらの文字を表示することを無視し、zip もダウンロードを強制しません。私は問題を理解できませんでした、私を助けてください、それは大歓迎です。

4

3 に答える 3

0

これをヘッダーに追加してみてください:

header('Content-Description: File Transfer');
于 2012-10-06T23:49:31.643 に答える
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);
}
于 2013-08-31T09:51:53.230 に答える
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」データで始まることに注意してください。Hex エディターで任意の zip ファイルを開いて、自分自身をテストします。

于 2012-10-06T17:13:42.163 に答える