有时,在一些特殊场景中,我们需要访问视频时,需要预先通过PHP做一些校验,校验通过后,才允许将视频数据输出给浏览器。
下面这段代码实现了用PHP从本地提取视频文件,并通过header函数以字节的方式向浏览器输出视频数据流。
<?php //需要下载的文件 $file_name = 'test.mp4'; //下载文件必须先要将文件打开,写入内存 $fp = fopen($file_name, 'r+'); //判断文件是否存在 if (!file_exists($file_name)) { echo "文件不存在"; exit(); } //判断文件大小 $file_size = filesize($file_name); //返回的文件 header('Content-type: application/octet-stream'); //按照字节格式返回 header('Accept-Ranges: bytes'); //返回文件大小 header('Accept-Length: ' . $file_size); //弹出客户端对话框,对应的文件名 header('Content-Disposition: attachment; filename=' . $file_name); //防止服务器瞬时压力增大,分段读取 $buffer = 4096; while(!feof($fp)) { $file_data = fread($fp, $buffer); echo $file_data; } //关闭文件 fclose($fp); ?>