Добавление другого URL в скрипт загрузки - PullRequest
1 голос
/ 10 апреля 2019

У меня есть веб-сайт для потокового видео, который также позволяет пользователям загружать видео.Он запускается через скрипт загрузки, который загружает идентификатор видео на сервер и инициирует прямую передачу файла.

Теперь я хочу поставить перед ним другой URL-адрес вместо прямой передачи файла.Я пытался создать правило mod_rewrite, но оно вызывает цикл и перенаправляет на этот URL навсегда.Это сервис сокращения ссылок, который позволяет монетаризацию.

Итак, как мне это заархивировать?Можно ли его заархивировать с помощью правила mod_rewrite?

Пытаясь применить правило mod_rewrite, понимая, что я не могу изменить переменную base_url в PHP, потому что он больше не найдет файл.

$vid   = intval($_GET['id']);
$label = intval($_GET['label']);

$sql = "SELECT * FROM video WHERE VID = ".$vid." LIMIT 1";
$rs = $conn->execute($sql); 
$formats = $rs->fields['formats'];
$server  = $rs->fields['server'];
$formats_arr = explode(',', $formats);

if ($server != '') {
    $sql = "SELECT * FROM video v, servers s WHERE v.VID = ".$vid." AND v.server = s.video_url LIMIT 1";
    $rs  = $conn->execute($sql); 
    $video_root = $rs->fields['video_url']; 
}
if (!$video_root) {
    $video_root = $config['BASE_DIR']."/media/videos";
}

foreach ($formats_arr as $format) {
    $f = explode('.', $format);
    if ($label == $f[1]) {
        if ($f[0] >= 481) {
            $condition = $new_permisions['hd_downloads'];
        } else {
            $condition = $new_permisions['sd_downloads'];           
        }
        $file = $video_root.'/h264/'.$vid.'_'.$f[1].'.'.$f[2];
        $file_name = $vid.'_'.$f[1].'.'.$f[2];
        break;
    }

}

if ($condition == 1) {
    ini_set('memory_limit', '-1');
    if (!$server) {
        if (file_exists($file) && is_file($file) && is_readable($file)) {
            $conn->execute("UPDATE video SET download_num = download_num+1 WHERE VID = ".$vid." LIMIT 1");
            @ob_end_clean();
            if(ini_get('zlib.output_compression')) {
                ini_set('zlib.output_compression', 'Off');
            }       
            header('Content-Type: application/force-download');
            header('Content-Disposition: attachment; filename="'.basename($file).'"');
            header('Content-Transfer-Encoding: binary');
            header('Accept-Ranges: bytes');
            header('Cache-control: private');
            header('Pragma: private');
            header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
            header('Content-Length: ' .filesize($file));             
            readfile($file);
            exit();
        } else {
            VRedirect::go($config['BASE_URL']. '/error');
        }
    } else {
            $conn->execute("UPDATE video SET download_num = download_num+1 WHERE VID = ".$vid." LIMIT 1");
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename='.basename($file));
            header('Content-Transfer-Encoding: chunked'); 
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            header('Pragma: public');

            $stream = fopen('php://output', 'w');

            $ch = curl_init($file);
            curl_setopt($ch, CURLOPT_READFUNCTION, function($ch, $fd, $length) use ($stream) {
                return fwrite($stream, fread($fd, $length));
            });

Кнопка загрузки должна открыть URL / download.phpс URL-адресом для сокращения ссылок, поэтому он будет загружен и перенаправлен на URL-адрес загрузки файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...