Доставлять одно и то же видео или файл с динамическим именем каждый раз в PHP - PullRequest
0 голосов
/ 08 мая 2018

У меня есть видео. Предположим, его зовут sample.mp4

Но я хочу, чтобы оно служило другим динамическим и неповторяющимся именем.

Например:

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

должно быть так

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

OR

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

Файл должен оставаться только один. Я могу копировать файлы под разными именами во время выполнения, но это будет неразумно.

Так что мне нужно что-то вроде динамического МАРШРУТА, который всегда будет связан с одним файлом.

Размер файла всегда меньше 10 мегабайт.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Попробуйте генерировать символические ссылки (ярлыки) на лету, должна быть быстрая операция:

<?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

?>
0 голосов
/ 08 мая 2018

Я не уверен в правилах перезаписи Codeigniter применяется по умолчанию и в том, как они могут или не могут конфликтовать с этим, но, по сути, все, что вам нужно - это заставить ваш веб-сервер обслуживать один конкретный файл независимо от того, к какому URL обращаются. Для этого в Apache вы помещаете файл с именем .htaccess в папку assets/video/ со следующим содержимым:

RewriteEngine on
RewriteRule ^ sample.mp4

^ просто соответствует любому запросу и заменяет его на sample.mp4. Смотри https://stackoverflow.com/a/20563773/476.

...