每次在 PHP 中交付具有动态名称的相同视频或文件



我有一个视频。假设它的名字是sample.mp4

但我希望它被作为另一个动态且不重复的名称。

例如:

data-videomp4="assets/video/sample.mp4"

应该是这样的

data-videomp4="assets/video/123456789.mp4"

data-videomp4="assets/video/any_RANDOM_NAME.mp4"

文件应仅保留一个。我可以在运行时复制不同名称的文件,但这并不明智。

所以我需要一个动态路由之类的东西,它将始终链接到单个文件。

文件大小始终小于 10 MB。

我不确定 Codeigniter 默认应用的重写规则以及它们可能如何与此冲突或不冲突,但从根本上说,您想要的只是让您的 Web 服务器服务于一个特定的文件,而不管正在访问什么 URL。要在 Apache 中执行此操作,请将一个名为.htaccess的文件放入包含以下内容的assets/video/文件夹中:

RewriteEngine on
RewriteRule ^ sample.mp4

^只是匹配任何请求并将其替换为sample.mp4。请参阅 https://stackoverflow.com/a/20563773/476。

尝试即时生成符号链接(快捷方式),应快速操作:

<?php
$real_file = 'sample.mp4';
// generating new symbolic link (shortcut)
$rnd_name = md5(random_bytes(100)) . '.mp4';
$cmd = "ln -s {$real_file} {$rnd_name} 2>&1";
$rez = shell_exec($cmd);
// check for errors - for example, no write permission for apache user by default
if ($rez !==null) {
var_dump($rez);
exit;
}
echo "<a href='{$rnd_name}' 
target='blank'>{$rnd_name}
</a><br><br>
<video id='myVideo' src='{$rnd_name}' controls='true'>
</video>";
// don't forget to unlink (delete) created symlinks after some time
?>

最新更新