强制浏览器下载视频,而不是在HTML中打开

12 浏览
0 Comments

强制浏览器下载视频,而不是在HTML中打开

这是下载链接...我正在制作一个下载网站,但下载链接在浏览器中打开而不是下载。我也尝试了,但不起作用!!!我该如何让它在我的网站上可下载!附注:可以右键保存。

0
0 Comments

问题的出现原因是浏览器默认会打开视频链接,而不是直接下载视频文件。解决方法是先使用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中添加以下代码:


  Download video

这样用户就可以点击"Download video"链接来下载视频文件了。

0
0 Comments

问题:如何强制浏览器下载视频而不是在HTML中打开?

原因:浏览器默认会根据文件类型来决定是直接打开还是下载文件,视频文件通常会在浏览器中直接播放而不是下载。如果希望强制浏览器下载视频文件而不是在HTML中打开,需要通过一些方法来更改响应头信息。

解决方法:通过在服务器端使用PHP来修改响应头信息,强制浏览器下载视频文件。

示例代码:

$filename = 'somefile.gif';
$url = 'https://somesite.tld' . $filename;
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"$filename\"");
header('Content-Type: application/octet-stream');
echo readfile($url);

将上述代码中的`$filename`和`$url`替换为自己的视频文件名和URL地址。

以上代码将在服务器端将响应头信息设置为强制下载,并将视频文件内容输出给浏览器。当用户访问这个PHP脚本时,浏览器会自动下载视频文件,而不是在HTML中直接播放。

0