Im создайте скрипт для загрузки файла с некоторого файлового сервера, но он не работает отлично.PHP cURL скачать файл браузером
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,5 МБ, и мой скрипт загрузил его, но размер составляет 6 МБ. Музыка воспроизводится, но прерывается в секунду. Знаете ли вы, где проблема?
Я попытался установить контент-длину в заголовке, но каждый функция возвращает содержимое Lengh = 0
'Вы должны установить все эти варианты, хотя делать ? – mdamia
Я не знаю, я тестировал всю опцию и o dont сейчас, что правильно: D .. coockie требуется – user3633178
см. Обновленный ответ ниже, добавьте опции заголовка, которые вам нужны, что должно дать отправную точку. Все требования к серверу различны, вам просто нужно устранить неполадки, чтобы вы это поняли. – mdamia