我有<a>
,在其href
属性中,我从第三方API中获得了视频网址,当点击该<a>
时,浏览器会打开一个“新标签”, 播放视频而不是下载!
问题:我需要实现的是在点击该<a>
之后直接下载视频,而不是在“新建”标签中播放该视频并强迫用户使用Right Click
然后选择Save Video As
选项以手动下载...只需点击Download
,浏览器就会开始下载该视频!
注意::我正在构建一个JavaScript应用程序,因此我需要使用JavaScript而不是PHP的解决方案,它也必须在所有浏览器上都可以使用...
编辑:我尝试了download
attribute,但它不起作用,因为它仅适用于同一来源!
更新:我发现的唯一解决方案是+7年的旧版本,它可以使用.htaccess
文件进行操作,您可以在此CSS Tricks Article进行检查,它有一个常见问题,我没有2个链接:使用此解决方案的Watch Video
和Download Video
...许多开发人员在此提到了此错误,但还没有人解决!
答案 0 :(得分:2)
由于端点支持CORS,因此您可以使用my file download lib保存内容而不是显示内容。
download("http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4");
答案 1 :(得分:0)
您需要按如下所示设置服务器中的标头,例如Content-Disposition
Content-Description: File Transfer
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="filename.jpg"
要允许预览和下载,您可以根据查询参数附加这些标头,例如,如果url有?download
,则附加这些标头以告诉浏览器下载文件而不是查看文件。
答案 2 :(得分:0)
您无法更改第三方服务器的标头。
您不想实现可以代理请求并更新标头的服务器。
我看到的唯一解决方案是使用request
或axios
在浏览器js中下载和处理内容,然后将其建议给用户(但是您必须将其保存在内存中,这可能不适合大型用户使用)视频)
答案 3 :(得分:0)
由于它是来自第三方API的视频网址,因此您可以通过两种方式解决该问题:
是的,关键是在http响应中设置content-type标头。
答案 4 :(得分:-1)
我最好的猜测是将用户重定向到一个单独的页面,以强制浏览器下载文件而不是查看文件(图像,视频,pdf)
使用 readfile 函数的PHP示例创建一个download.php文件
EOF
希望有帮助。