强制浏览器下载视频,而不是在 html 中打开 [重复]
Posted
技术标签:
【中文标题】强制浏览器下载视频,而不是在 html 中打开 [重复]【英文标题】:Force browser to download the video instead opening in html [duplicate] 【发布时间】:2018-03-04 05:17:37 【问题描述】:link
以上是下载链接.... 我正在制作一个下载站点,但下载链接在浏览器中打开而不是下载。 我也试过,但没有工作!!!!我怎样才能让我的网站可以下载这个!
PS:可以像右键一样保存..
【问题讨论】:
压缩视频并添加到链接 a href='video.zip' ... 这意味着他必须先将视频下载到他的服务器。类似的是谷歌 向它发送一个 php 脚本,提供一个需要下载的 mime 类型(我认为是八位字节流),然后读取文件并将内容提供给它们。 现在有href链接的下载属性,不完全支持,见上链接 html 的download
属性不起作用,因为它将是启用 CORS 的资源。
【参考方案1】:
我会通过 php 管道文件:
$filename= 'somefile.gif';
$url = 'https://somesite.tld'.$filename;
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"$filename\"");
echo readfile($url);
用你自己的 url 和文件名试试这个。在浏览器中导航到此 php 脚本,您的文件将被下载。
【讨论】:
您甚至可能想添加header('Content-Type: application/octet-stream');
【参考方案2】:
您可以先使用curl
将链接下载到您的服务器,然后您可以从您的服务器下载。
从服务器链接下载代码文件
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$source = "https://r3---sn-h557snlz.googlevideo.com/videoplayback?id=o-ALLyHMODFlHOKLmejy__bT3j3IkmFCfFfXrFA2tfi3Eu&ei=RyXFWeKkKI_cogOH0LGgAg&ip=27.34.20.130&pl=21&ratebypass=yes&itag=43&expire=1506113959&signature=6AB44626DF3DC5CC517D1B0C7DC1ACF27CC7B6A7.2BC18ED29E93C2B8150031A26E88992AB0EBDA1E&key=cms1&gir=yes&dur=0.000&source=youtube&lmt=1490104605623196&requiressl=yes&ipbits=0&sparams=clen,dur,ei,expire,gir,id,initcwndbps,ip,ipbits,ipbypass,itag,lmt,mime,mip,mm,mn,ms,mv,pcm2cms,pl,ratebypass,requiressl,source&clen=8147748&mime=video%2Fwebm&req_id=7d993d5e8d1aa3ee&redirect_counter=2&fexp=23702512&cms_redirect=yes&ipbypass=yes&mip=171.76.76.26&mm=30&mn=sn-h557snlz&ms=nxu&mt=1506094130&mv=m";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$data = curl_exec ($ch);
$error = curl_error($ch);
curl_close ($ch);
$destination = "/path/to/public/file.webm";
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
你的html之后可以包含如下
<a href="/file.webm" download>
Download video
</a>
【讨论】:
以上是关于强制浏览器下载视频,而不是在 html 中打开 [重复]的主要内容,如果未能解决你的问题,请参考以下文章