PHP卷曲下载
我正在使用Curl从本地下载文件PHP卷曲下载,php,curl,Php,Curl,我正在使用Curl从本地下载文件 function get_data($url) { $ch = curl_init(); $timeout = 5; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $data = curl_exec($ch); curl_clo
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
header("Content-Type: application/force-download");
header("Content-disposition: attachment; filename=zipfile.tar.gz");
echo $data;
}
$rt = get_data('http://slackbuilds.org/slackbuilds/13.37/multimedia/umplayer.tar.gz');
这会下载文件,但我无法打开。是否必须提及正确的内容类型?我使用这个脚本制作视频,所以我尝试了内容类型:Video,但仍然不合适 您可能缺少
标题(“内容传输编码:二进制”)代码>将CURLOPT_BINARYTRANSFER设置为TRUE并更改内容类型
<?php
$url = "http://slackbuilds.org/slackbuilds/13.37/multimedia/umplayer.tar.gz";
$opts = array(
CURLOPT_URL =>$url,
CURLINFO_CONTENT_TYPE => "text/xml",
CURLOPT_BINARYTRANSFER => TRUE,
CURLOPT_RETURNTRANSFER => TRUE
);
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
header("Content-Type: application/x-gzip");
header("Content-disposition: attachment; filename=zipfile.tar.gz");
echo $data;
?>
TRUE,
CURLOPT_RETURNTRANSFER=>TRUE
);
$ch=curl_init();
curl_setopt_数组($ch,$opts);
$data=curl\u exec($ch);
$info=curl\u getinfo($ch);
卷曲关闭($ch);
标题(“内容类型:应用程序/x-gzip”);
标题(“内容配置:附件;文件名=zipfile.tar.gz”);
回波数据;
?>
这可能有点傻,但我必须问:你是否在任何地方打印/回显$rt
?你确定在它之前/之后没有打印更多的内容吗?是的,在标题之后,我回写了工作正常的itok,我在寻找视频文件,所以我对视频进行了适当的更改,为工作正常的内容类型添加了视频/mp4。还有一个问题,如果视频大小增加(比如400MB),它会占用PHP内存,是吗?是的,它会占用您的内存,因为您使用的是RETURNTRANSFER
,所以它会返回到驻留在内存中的变量中。