无法下载大文件

时间:2017-10-10 14:30:57

标签: php drupal

我使用以下代码下载文件。当我使用这个代码与小文件,它的工作原理。但是,如果我只指向一个大文件~2GB,相同的代码无法下载大文件。

$file_name = 'myfile.tar.gz';
$file_url = $base_url.'/sites/default/files/vss/Windows/myfile.tar.gz';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"".$file_name."\""); 
readfile($file_url);

任何线索都会有所帮助。

更新

我能够使用分块文件运行,但我仍然无法打开下载的存档文件。我尝试了多次,但每次遇到同样的错误:

  

无法以[gzip]存档的形式打开文件   不是档案

我使用的代码是:

// Read a file and its content chunk by chunk
function readfile_chunked($filename, $retbytes = TRUE) {
    $buffer = '';
    $cnt    = 0;
    $handle = fopen($filename, 'rb');
    if ($handle === false) {
        return false;
    }
    while (!feof($handle)) {
        $buffer = fread($handle, CHUNK_SIZE);
        echo $buffer; 
        ob_flush();
        flush();
        if ($retbytes) {
            $cnt += strlen($buffer);
        }
    }
    $status = fclose($handle);
    if ($retbytes && $status) {
        return $cnt; // return num. bytes delivered like readfile() does.
    }
    return $status;
}

0 个答案:

没有答案