我正在尝试启动位于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";
}
?>
- 1 回答
- 0 关注
- 823 浏览
添加回答
举报
0/150
提交
取消