我正在尝试启动位于URL的mp4文件的下载(我无权访问该文件本身)。我不想在浏览器中播放视频,也不想用户必须离开网页。
我曾尝试创建一个<a>
元素并使用download属性,但它必须与IE兼容,IE不支持download属性,因此不可行。
我已经尝试过window.open('https://example.com/file-name.mp4');
,但是某些浏览器只会在新标签页中开始播放视频,而无需下载它。
我还尝试了window.open('https://mywebsite.com/download.php?file-id');
,其中的download.php文件会检查以确保用户有权下载该文件,设置url的格式,设置Content-Type和Content-Disposition标头,并以{{ 1}}。这很好,除了失败时,download.php页面保持打开状态。我宁愿能够在原始页面上显示错误消息,而不必为download.php设置错误页面。
我试图通过AJAX调用使用上述方法来避免重定向问题,但是我无法弄清楚如何获取响应并开始下载响应。
如何启动mp4文件的下载,而又没有在浏览器中播放或重定向到另一个网页的机会?
答案 0 :(得分:2)
<?php
set_time_limit(0);
$file = 'file-name.mp4';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
if(!readfile($file)) {
echo "error occured!";
}
exit;
} else {
echo "Error file not found";
}
?>