PHP文件下载问题 - 无法读取

时间:2013-06-26 11:46:13

标签: php file download

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

$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);

2 个答案:

答案 0 :(得分:2)

您可以尝试从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;
    }
}

答案 1 :(得分:0)

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

希望这个提示能节省时间。 :)