【发布时间】:2019-04-25 01:44:13
【问题描述】:
我正在尝试下载位于 url 的 mp4 文件(我无权访问文件本身)。我不希望视频在浏览器中播放,也不希望用户必须离开网页。
我尝试创建<a>元素并使用下载属性,但它必须与不支持下载属性的IE兼容,因此不可行。
我试过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 文件的下载,而不会在浏览器中播放或重定向到另一个网页?
【问题讨论】:
-
在您的 PHP 主页上,您可以进行处理以验证和输出任何错误。如果没有错误,请提供 download.php 的链接。但不要从 download.php 中删除错误处理。因此,他们只能在获得下载权限之前在主页上看到错误,但 download.php 仍然会进行处理,以防万一有人自己创建 URL。
标签: javascript php html