一尘不染

使用PHP下载文件,而不是大文件上工作?

php

我正在使用php下载文件,而不是在新窗口中打开文件本身。对于较小的文件似乎可以正常工作,但对于较大的文件则无法工作(我需要在大型文件上使用)。这是我必须下载文件的代码:

function downloadFile($file) {   
    if (file_exists($file)) {         
        //download file
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($file));
        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($file));
        ob_clean();
        flush();
        readfile($file);
        exit;   
    };    
};

但是,当我尝试下载大文件(例如265mb)时,浏览器告诉我找不到文件吗?文件一定在服务器上,脚本对于较小的文件也可以正常工作。有什么方法可以下载类似于我已有的大文件?


阅读 230

收藏
2020-05-29

共1个答案

一尘不染

PHP对脚本可以运行多长时间以及可以使用多少内存有限制。脚本可能在完成之前就已超时,或者通过读取大文件而占用了过多的内存。

尝试调整中的max_execution_timememory_limit变量php.ini。如果您无权访问php.ini,请尝试set_time_limit)和/或ini_set函数。

2020-05-29