PHP文件下载问题-Can';t读取


PHP File Download Issue - Can't Read

我有以下代码用于自动下载文件点击提交按钮,一切似乎都很好;文件以正确的格式、正确的大小、正确的名称下载,但当我想打开它,我收到一个错误,文件无法读取,可能是什么问题

$file=mysql_fetch_assoc($sel);
$file=$file['downloadlink'];
header('Content-Type: "application/octet-stream"');
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file));
header("Content-disposition: attachment; filename='"".basename($file)."'"");
readfile($file);

您可以尝试从readfile()注释调整此函数:

function DownloadFile($file) { // $file = include path
    if(file_exists($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;
    }
}

我对此有一个补充。如果文件大小很大,它会下载我们根本无法打开的空文件。这不是"readfile"函数本身的问题。问题是将大文件读入内存。因此,为了防止这种问题,我们必须在"readfile"函数之前立即使用"ob_end_flush()"来关闭输出缓冲区。

希望这条建议能节省一些时间。:)