Я пытаюсь загрузить файл с использованием php-скрипта из следующего URL-адреса:
http://www.xcontest.org/track.php?t=2avxjsv1.igc
Используемый мной код выглядит следующим образом, но он создает только пустые файлы для загрузки:
$DLFile= "testfile.igc"; $DLURL="http://www.xcontest.org/track.php?t=2avxjsv1.igc"; $fp = fopen ($DLFile, 'w+'); $ch = curl_init($DLURL); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_FILE, $fp); curl_exec($ch); curl_close($ch); fclose($fp);
Другая странная вещь: при вводе URL-адреса в веб-браузере я не получаю файл. Я могу загрузить файл только при нажатии ссылки на веб-сайте !.
Любые советы очень ценятся!
Дайте этому идти
<?php $output_filename = "testfile.igc"; $host = "http://www.xcontest.org/track.php?t=2avxjsv1.igc"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $host); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, false); curl_setopt($ch, CURLOPT_REFERER, "http://www.xcontest.org"); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_HEADER, 0); $result = curl_exec($ch); curl_close($ch); print_r($result); // prints the contents of the collected file before writing.. // the following lines write the contents to a file in the same directory (provided permissions etc) $fp = fopen($output_filename, 'w'); fwrite($fp, $result); fclose($fp); ?>
#
или если вы хотите поместить его в цикл для разбора нескольких ссылок … вам нужны некоторые функции .. вот приблизительная идея ….
<?php function collect_file($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, false); curl_setopt($ch, CURLOPT_REFERER, "http://www.xcontest.org"); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_HEADER, 0); $result = curl_exec($ch); curl_close($ch); return($result); } function write_to_file($text,$new_filename){ $fp = fopen($new_filename, 'w'); fwrite($fp, $text); fclose($fp); } // start loop here $new_file_name = "testfile.igc"; $url = "http://www.xcontest.org/track.php?t=2avxjsv1.igc"; $temp_file_contents = collect_file($url); write_to_file($temp_file_contents,$new_file_name) // end loop here ?>