Readfile()已开始在页面上显示

时间:2018-03-23 16:33:06

标签: php readfile ziparchive

正在展示的部分内容:

    PKd�wL��� ���/images/image_0.jpg��ex\K��1昙�3�133���;ffff����Ԇ�����w�̼߳�cw��딎�$��Z�������&QRTB�|>��E��M5���|�~b��)�o�3�� �>s���o�'���^B�O��V ����@���Q?S#(�� 6���v4���8����vvV�sy}#�_ �O��s�o���L�7Fv.F&�ol��WV.V��?�����g�W!�/w!�������K�oLL�1`���G�p�X���T�>C�@��L��)q���s��3�g�8�p�O�?

我正在尝试将图像下载到zip文件中,这是我到目前为止所做的:

if (count($headers->images) > 0) {
    $counter = 0;
    $zip = new ZipArchive();
    $tmpFile = "tmpFolder/tmp" . strtotime("now") . ".zip";
    $zip->open($tmpFile, ZipArchive::CREATE);
    foreach($headers->images as $key => $images) $zip->addFromString("/images/image_" . $counter++ . ".jpg", file_get_contents($images));
    $zip->close();
    if (file_exists($tmpFile)) {
        $fname = basename($_POST["titleZipFile"] . ".zip");
        $size = filesize($tmpFile);
        header("Content-Type: archive/zip");
        header("Content-Disposition: attachment; filename=$fname");
        header("Content-Length: " . $size);
        ob_end_clean();
        readfile($tmpFile);
        //unlink($tmpFile);
        echo "<div id='reportMessage'><p>You have successfully save images. Please go to your folder " . $_POST["titleZipFile"] . ".zip<p></div>";
    }
}

如果我删除unlink($ tmpFile);然后生成tmp zip并生成zip中的图像。但实际上并没有在浏览器中显示zip下载。

有没有人知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:-1)

尝试将内容类型的标题更改为以下内容。我认为标题导致浏览器解释它应该做什么的问题。请尝试以下类型。

 header('Content-type: application/zip');