无法播放使用XAMPP下载的超过700mb的视频文件

时间:2017-11-22 06:40:43

标签: php mysql xampp

我无法下载已在我网站上传的文件,例如: 我已经上传了一个800mb文件大小的视频文件,没关系,文件保存到我文件夹中的目录,然后我想再次下载该文件,但是一下载文件,我就会得到1kb文件不是文件的确切大小,当我播放时,没有任何反应

这是我的代码:

<?php
include 'db.php';
if(isset($_REQUEST['name'])) 
{
$var =$_REQUEST['name'];


$dir = "../files/"; 

$file = $dir . $var;



if(file_exists($file))
{

    header('Content-Description: File Transfer');
        header('Content-Type: video');
        header('Content-Disposition: attachment; 
filename='.basename($file));
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        ob_clean();
        flush();
        readfile($file);
    mysqli_close($conn);
    exit();
}
else{
    echo "File not found";
}

}

?>  

1 个答案:

答案 0 :(得分:0)

是的,我也遇到了同样的问题。在互联网上搜索了很多之后,我发现问题与输出缓冲有关。以下代码解决了我的问题。

<?php
$file = $_GET['file'];


if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_end_clean();  //adding this line solves my problem
readfile($file);

exit;
?>

代码ob_end_clean()基本运行,将抢占缓冲区中的所有内容,然后擦除缓冲区,并关闭输出缓冲。