为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕虎7371278 2021-04-30 13:10:55
我正在尝试启动位于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文件的下载,而又没有在浏览器中播放或重定向到另一个网页的机会?
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

<?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";

}

?>


查看完整回答
反对 回复 2021-05-07
  • 1 回答
  • 0 关注
  • 823 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信