php下载代码适用于pdf但不适用于zip

时间:2016-05-18 06:02:06

标签: php download zip exe

我已成功使用此代码下载pdf文件。我使用相同的代码下载包含exe的zip文件(只是更改文件名并将mime类型更改为application / zip),当我尝试打开时出现此错误下载文件: " Windows无法打开该文件夹。 压缩(压缩)文件夹' [文件名]'无效"

我确认原始的未压缩文件已运行,而且我也可以成功解压缩笔记本电脑上的文件夹并运行exe。

我还将我的网站上的zip文件通过Filezilla下载到临时文件夹,解压缩并运行,以确保上传没有问题。

它是一个70 MB的文件,所以我尝试下载一个65 kb的压缩exe文件---同样的错误。

我添加了标题(" Content-Length:"。$ file_size),即使pdfs在没有它的情况下正常下载---同样的错误。

我尝试了application / octet-stream ---同样的错误。

有什么想法吗?任何建议表示赞赏。

$file_size  = filesize($file_path);  
$file = @fopen($file_path,"r"); 
if ($file) 
{
    header("Pragma: public"); 
    header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); 
    header("Content-Disposition: attachment; filename=\"$file_name\""); 
    //header("Content-Length: " . $file_size); 
    header("Content-Type: " . $ctype);


    set_time_limit(0);
    fseek($file, 0);

    while(!feof($file)) 
    {
        print(@fread($file, 1024*8));
        ob_flush();
        flush();
        if (connection_status()!=0) 
        {
            @fclose($file);
            exit;
        }           
    }
    @fclose($file);
}

1 个答案:

答案 0 :(得分:0)

问题可能是您的php_execution_time很低,并且在下载zip之前就会中止。 检查zip的大小是否与服务器上的大小相同。

或激活Apache中的mod_xsend文件并设置标题:

header("X-Sendfile: $filename");