У меня есть видео. Предположим, его зовут sample.mp4
Но я хочу, чтобы это служило еще одним динамичным и неповторяющимся именем.
Например:
data-videomp4 = "assets/video/sample.mp4"
должно быть так
data-videomp4 = "assets/video/123456789.mp4"
ИЛИ ЖЕ
data-videomp4 = "assets/video/any_RANDOM_NAME.mp4"
Файл должен остаться только один. Я могу копировать файлы с разными именами во время выполнения, но это будет неразумно.
Поэтому мне нужно что-то вроде динамического МАРШРУТА, который всегда будет связан с одним файлом.
Размер файла всегда меньше 10 мегабайт.
Я использую Codeigniter. Как реализовать динамическую маршрутизацию для одного файла? Приведите пример.
Пожалуйста, проверьте документацию codeigniter для динамической маршрутизации codeigniter.com/user_guide/general/routing.html
Вы пробовали создать символическая ссылка динамически?
Как вы определяете, какой файл обслуживать? В assets/video/ есть только один файл? Тогда файл .htaccess с RewriteRule ^ sample.mp4 сделает свое дело ...
Да есть только один файл. Можете ли вы предоставить мне точную строку, которую я могу где-то разместить? Поставить один и тот же файл с другим именем?
В этом случае я хочу, чтобы файл обслуживался под другим именем. Не перенаправляю на этот файл, ребята. Я знаю твои предложения. Благодарю за помощь. Но ничто здесь не поможет сделать так, чтобы исходное имя файла никуда не разглашалось. Также файл должен доставляться по случайному имени.
^ Я также не понимаю, почему это необходимо. если вы просто пытаетесь обойти кеш, просто добавьте ?<?php echo time(); ?> или что-то в этом роде. Пользователь по-прежнему сможет загрузить файл, даже если имя будет другим, при условии, что он может получить к нему доступ, а вы не разбиваете выходные данные.






Я не уверен в правилах перезаписи, применяемых Codeigniter по умолчанию, и в том, как они могут или не могут конфликтовать с ними, но в основном все, что вам нужно, - это заставить ваш веб-сервер обслуживать один конкретный файл независимо от того, к какому 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
?>
Любые объяснения, почему кто-то отклонил мое рабочее решение?
вы используете компонент маршрутизации? если нет, используйте один! и если вы не хотите, возитесь с директивами виртуального хоста .htaccess и настройте перенаправление на файл php, который будет обслуживать ваш файл. Используя маршрутизатор, вы можете установить регулярное выражение, например
#assets/video/\w+.mp4#