Загрузите удаленный файл на сервер с помощью PHP

Я смотрел повсюду в течение последних двух дней и пробовал все и до сих пор не могу заставить работать. Я чувствую, что это должно быть относительно простой задачей.

Все, что я хочу сделать, это загрузить удаленный файл из 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'));