命名下载文件时出现问题

时间:2011-03-21 15:55:32

标签: php

我有一些PHP代码,可以下载一个zip文件......这个代码是从一个名为 download_file.php 的文件调用的(非常原创,我知道)

相关功能如下:

function download_clientfile() {
    if ($this->download_file === FALSE) {
        $this->log->log(sprintf("The download file was not generated."), PEAR_LOG_CRIT);
        return;
    }

    $fsize = filesize($this->download_file);
    $path_parts = pathinfo($this->download_file);
    $ext = strtolower($path_parts["extension"]);

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; file='.$path_parts['basename']);
    header('Content-Transfer-Encoding: binary');
    header('Expires:0');
    header("Cache-control: must-revalidate, post-check=0, pre-check=0");
    header('Pragma: public');
    header('Content-Length: '.filesize($this->download_file));
    ob_clean();
    flush();
    readfile($this->download_file);
    exit;

}


问题:下载的文件是预期的zip文件,但下载名称为“download_file.php”

有关如何通过zip文件的名称下载它的任何建议。 感谢

3 个答案:

答案 0 :(得分:1)

使用 filename 代替 file

header('Content-Disposition: attachment; filename='.$path_parts['basename']);

此外,您可能会遇到使用此扩展程序的浏览器。在这种情况下,您可以像这样调用脚本:

download_file.php?file=myfile.zip

或:

download_file.php/myfile.zip

这样,URL以.zip结尾,这会诱使浏览器认为它正在下载ZIP文件。

答案 1 :(得分:0)

尝试将file =更改为filename =

header('Content-Disposition: attachment; filename='.$path_parts['basename']);

答案 2 :(得分:0)

使用

header("Content-Disposition: attachment; filename=\"$filename\"");