Если ваше видео находится в той же исходной странице (не в вашем случае)
<a href="/path/to/video.mp4" download="video">Download</a>
Довольно просто, не требует Javascript , и работает во всех браузерах, кроме IE.
Если ваше видео из другого источника (ваш случай)
При тестировании своего решения я обнаружил, что загрузки из разных источников заблокированы Chrome и Firefox в целях безопасности.
a. Если вы управляете сервером
Если сервер реализует proprer CORS, или если у вас есть контроль над сервером и вы можете добавить эти CORS, вы можете использовать этот скрипт, который я бесстыдно взял из этого вопроса SO :
<!-- The style="display:none;" is optional, you can remove it if you don't want the feature explained below. -->
<a id="download-link" href="javascript:alert('The video is not yet ready!')" download="video" style="display:none;">Download</a>
<script>
var a = document.getElementById("download-link");
function downloadResource(url, filename) {
// Current blob size limit is around 500MB for browsers
if (!filename) filename = url.split('\\').pop().split('/').pop();
fetch(url, {
headers: new Headers({
'Origin': location.origin
}),
mode: 'cors'
})
.then(response => response.blob())
.then(blob => {
let blobUrl = window.URL.createObjectURL(blob);
// Place the resource in the href of the link
a.href = blob;
// Bonus : Only show the link if and when the Javascript code has executed
a.style.display = "inline";
})
.catch(e => console.error(e));
}
downloadResource("https://invidious.fdn.fr/latest_version?id=NF_69Dyle1Y&raw&itag=22");
</script>
Я добавил небольшую функцию, которая будет держать ссылку скрытой до тех пор, пока файл не будет полностью загружен. Вы, конечно, можете изменить это в зависимости от ваших требований.
b. Если вы не контролируете сервер
Если он использует CORS и разрешает все источники (или, по крайней мере, ваше происхождение), приведенный выше сценарий должен работать.
Если это не так, вы ' К сожалению, нам не повезло. Вы все еще можете открыть видео в новом окне и попросить пользователя щелкнуть правой кнопкой мыши и «Сохранить как» вручную; это менее изящно, но, по крайней мере, работает.