Друзья, подскажите. Есть nginx, на нем есть потоковый модуль mp4. Также устанавливается условие:
if ($request_filename ~* ^.*?/([^/]*?)$)
{
set $filename $1;
add_header Content-Disposition "attachment; filename=$filename";
}
для отправки файла mp4 пользователю, если он запрашивает его напрямую. те. он воспроизводится в видеопроигрывателе, и если он хочет загрузить, он загружается.
Задача состоит в следующем: вам нужно как-то организовать загрузку mp4 через fetch (mode: "no-cors") так, чтобы он загружается и / или в кэш браузера, и пользователю показывается диалог загрузки.
Я использую PHP для обработки запросов на выборку. Но видео файл идет напрямую. Я попытался использовать php заголовки, чтобы получить файл для загрузки, но он не работает ..
Оказывается, я запрашиваю файл mp4 следующим образом:
fetch ("'. $fileToDownload.'", {/*$fileToDownload - PHP variable — URL to video file*/
method: "get",
headers: {
"Access-Control-Allow-Origin": "site.org",
},
mode: "no-cors"
});
загружается в кеш браузера и, конечно же, после завершения загрузки ничего не происходит. он просто лежит там, и окно сохранения файла не появляется, и я не знаю, как это сделать ... кроме того, если вы сразу же дадите этот файл для загрузки, нажав на ту же ссылку, что и запрос на выборку, был , файл НЕ берется из кэша, который сделал выборка, но загружается снова.
Другие методы, такие как псевдо-щелчок по ссылке, не работают, потому что есть таймер задержки .... Вроде загрузка начинается через 10 секунд. А из-за таймера симуляция нажатия на ссылку не работает, потому что если вы поставите ее на более чем 3 секунды, окно будет заблокировано политикой браузера.
Я попытался использовать загрузку. js, но он проходит через xhr, и через него не передается свойство mode, а загрузка блокируется, поскольку домен, из которого загружается файл, отличается.
Я подозреваю, что вам нужно использовать serviceworker перехватить кеш? ..
Потратил целый день, но оказывается, что я могу только позвонить пользователю, после истечения таймера, нажать на кнопку загрузки, которая кажется скрытой до конца таймера.
Мне просто нужно дать пользователю файл для загрузки. Но из-за того, что он находится в другом домене, а также в виде потока приложения / октета, загрузка блокируется браузером.
окно. открыть, а также окно. location = .. нельзя использовать из-за таймера, windows и перенаправления блокируются браузером, то есть тип mime не соответствует полученному контенту (видео / mp4)