Как принудительно сохранить видеофайл по прямой ссылке?

Алексей Теплов
На сайте с 30.12.2019
Offline
52
286

Здравствуйте!

Вообщем, есть прямая ссылка на видеофайл:

<a target="_blank" href="'.$link.'" download="'.$name_video.'.mp4">Скачать</a>

Если кликнуть по ней то открывается плеер браузера, в нем конечно можно выбрать правой кнопкой "Сохранить видео как..." Но это зверски неудобно!

Сделал по другому

<a href="/get.php?url='.enxor($link).'&title='.$name_video.'" download="'.$name_video.'.mp4">Скачать</a>

Файл get.php

$url=dexor($_REQUEST['url']);
$name = $_REQUEST['title'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($name.'.mp4'));
header('Content-Transfer-Encoding: binary');
readfile($url);
exit;

Как бы всё работает, всё хорошо! Вот только файл на другом сервере, получается я проксирую загрузку файла посетителем через свой сайт на php. Как этого можно избежать? Видел скрипт на JS по принудительному сохранению картинок, но к сожалению, я не понимаю в JS и не смог с ним разобраться.

Буду очень признателен за помощь!

lutskboy
На сайте с 22.11.2013
Offline
192
#1

если у вас впс то отдавать можно напрямую как с помощью php и заголовка  X-Accel-Redirect 

так и nginx

    location ~ "/(?<filename>[^/]+\.mp4)$" {
        if ($arg_download = 1) {
            add_header Content-Disposition 'attachment; filename="$filename"';
        }        
    }

http://site.ru/video.mp4?download=1

Алексей Теплов
На сайте с 30.12.2019
Offline
52
#2
X-Accel-Redirect вроде работает только с локальныйми файлами, а в моем случае удалённый файл и доступа к серверу нету...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий