【发布时间】:2015-08-22 12:50:21
【问题描述】:
我创建脚本从某个文件服务器下载文件,但不能正常工作。
function downloadPage2($url){
$ch = curl_init();
$userAgent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)';
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_BUFFERSIZE, 8096);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $buffer) {
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header('Cache-Control: private', false);
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename="mp3.mp3"');
header('Content-Transfer-Encoding: binary');
// header('Content-Length: ' . strlen($buffer)); // provide file size
header('Connection: close');
echo $buffer;
return strlen($buffer);
});
curl_exec ($ch);
curl_close($ch);
}
当从服务器输入 $url 到文件 (mp3) 时,它会下载这个文件,但不是正确的文件大小。示例:服务器上的文件大小为 4.5mb,我的脚本下载了它,但大小为 6mb。音乐正在播放,但每秒中断。 你知道哪里出了问题吗?
我尝试在标题中设置内容长度,但每个函数都返回内容长度 = 0
【问题讨论】:
-
`你需要设置所有这些选项吗?
-
我不知道,我测试了所有选项,现在不知道哪个是正确的:D .. 需要 coockie
-
查看下面的更新答案,添加您需要的标题选项,这应该是一个起点。每个服务器的要求都不同,您只需要排除故障即可使其正确。
标签: php curl browser download filesize