Я смотрел повсюду в течение последних двух дней и пробовал все и до сих пор не могу заставить работать. Я чувствую, что это должно быть относительно простой задачей.
Все, что я хочу сделать, это загрузить удаленный файл из URL-адреса в каталог на моем сервере.
Так, например, если
$_url = http://www.freewarelovers.com/android/download/temp/1306495040_Number_Blink_1.1.1.apk
и $_dir = /www/downloads/
Затем, когда все сказано и сделано, я хочу 1306495040_Number_Blink_1.1.1.apk
в /www/downloads/
Я пробовал функцию copy()
, я пробовал
file_put_contents("$_dir.$_file_name", file_get_contents($_url));
и получите следующую ошибку:
file_get_contents(): failed to open stream: HTTP request failed!
Это должно сделать это:
set_time_limit(0); $url = 'http://www.freewarelovers.com/android/download/temp/1306495040_Number_Blink_1.1.1.apk'; $file = fopen(dirname(__FILE__) . '/downloads/a.apk', 'w+'); $curl = curl_init($url); // Update as of PHP 5.4 array() can be written [] curl_setopt_array($curl, [ CURLOPT_URL => $url, // CURLOPT_BINARYTRANSFER => 1, --- No effect from PHP 5.1.3 CURLOPT_RETURNTRANSFER => 1, CURLOPT_FILE => $file, CURLOPT_TIMEOUT => 50, CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)' ]); $response = curl_exec($curl); if($response === false) { // Update as of PHP 5.3 use of Namespaces Exception() becomes \Exception() throw new \Exception('Curl error: ' . curl_error($curl)); } $response; // Do something with the response.
$url = 'http://www.example.com/a-large-file.zip'; $path = '/path/to/a-large-file.zip'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); curl_close($ch); file_put_contents($path, $data);
он использует завиток
$ url – это URL-адрес файла
$ path – это где и имя для сохранения файла
надеюсь это работает
Используйте curl для загрузки файла с удаленного сервера, как показано ниже.
$url = "http://path/toserver/filename"; $destination = "uploads/filename"; $fp = fopen ($destination, 'w+'); $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 10 ); curl_setopt( $ch, CURLOPT_FILE, $fp ); curl_exec( $ch ); curl_close( $ch ); fclose( $fp );
ссылка http://www.tricksofit.com/2014/04/download-file-from-remote-server-in-php
file_put_contents
ожидает имя файла, а не имя каталога.
Разделите его на разные этапы:
$raw = file_get_contents($_url); ... check if $raw has anything useful in it file_put_contents($_dir, $raw); ... check if the file showed up
Либо извлечения происходит в файле file_get_contents, либо в файле file_put_contents, или файл, который вы загружаете, слишком велик и превышает ваш memory_limit по умолчанию PHP.
Возможно, у вас нет обертки fopen, поэтому файлы file_get_contents могут не работать. Попробуйте использовать curl
или библиотеку, такую как Snoopy .
Поскольку PHP 5.1.0, file_put_contents () поддерживает запись по частям путем передачи дескриптора потока в качестве параметра $ data:
Нет необходимости использовать Curl
file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));