0

我有一个视频文件,我需要使用函数而不是直接链接来获取它。当我查看直接链接的视频页面代码时,这就是我在屏幕上看到的内容:

在此处输入图像描述

但是当我使用我的功能时,首先视频不会运行,当我查看代码时,会出现:

在此处输入图像描述

我意识到它是同一个文件,相同的字符,但中间有许多 \0 字符。这些是黄色的。

这是我正在使用的代码:

$file_name = --path to file--;
$file_size = filesize($file_name);
$ctype = 'video/mp4';

header('Content-Type: '.$ctype);
header('Content-Length: ' . $file_size);
header("Accept-Ranges: bytes");    
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');

$file = fopen($file_name, 'rb');
$read = fread($file, $file_size);
print($read);
fclose($file);
exit;

我需要更改代码吗?有什么东西可以让 fread 正确读取文件吗?还是我需要对要显示的文件进行某种处理?

4

1 回答 1

1

尝试使用readfile()而不是fopen()/ fread()/ fclose()。它将提高内存效率并且不易出错。

话虽如此,您的代码不应该工作(假设文件路径正确)并没有真正的原因 - 您应该(一次)确保display_errors关闭,以防 PHP 错误损坏文件。您可以通过ini_set('display_errors', 0);在脚本顶部进行设置来做到这一点。

于 2012-12-23T13:00:12.897 回答