如何启动从URL下载mp4(并防止mp4在浏览器中播放)?

我正在尝试启动位于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标头,并以结尾readfile($file_url);。这很好,除了失败时,download.php页面保持打开状态。我宁愿能够在原始页面上显示错误消息,而不是必须为download.php设置错误页面。

我尝试将上述方法与AJAX调用一起使用,以避免出现重定向问题,但是我无法弄清楚如何获取响应并开始下载。

如何启动mp4文件的下载,而又没有在浏览器中播放或重定向到另一个网页的机会?


慕虎7371278
浏览 824回答 1
1回答

慕桂英546537

<?phpset_time_limit(0);$file = 'file-name.mp4';if (file_exists($file)) {&nbsp; &nbsp; header('Content-Description: File Transfer');&nbsp; &nbsp; header('Content-Type: application/octet-stream');&nbsp; &nbsp; header('Content-Disposition: attachment; filename="'.basename($file).'"');&nbsp; &nbsp; header('Expires: 0');&nbsp; &nbsp; header('Cache-Control: must-revalidate');&nbsp; &nbsp; header('Pragma: public');&nbsp; &nbsp; header('Content-Length: ' . filesize($file));&nbsp; &nbsp; if(!readfile($file)) {&nbsp; &nbsp; &nbsp; &nbsp;echo "error occured!";&nbsp; &nbsp; }&nbsp; &nbsp; exit;} else {&nbsp; &nbsp; echo "Error file not found";}?>
打开App,查看更多内容
随时随地看视频慕课网APP