Нужен скрипт php для загрузки файла на удаленном сервере и сохранения локально

Попытка загрузить файл на удаленном сервере и сохранить его в локальном подкаталоге.

Следующий код, похоже, работает для небольших файлов, <1MB, но большие файлы просто тайм-аут и даже не загружаются.

<?php $source = "http://someurl.com/afile.zip"; $destination = "/asubfolder/afile.zip"; $data = file_get_contents($source); $file = fopen($destination, "w+"); fputs($file, $data); fclose($file); ?> 

Любые предложения по загрузке больших файлов без перерывов?

Solutions Collecting From Web of "Нужен скрипт php для загрузки файла на удаленном сервере и сохранения локально"

 $ch = curl_init(); $source = "http://someurl.com/afile.zip"; curl_setopt($ch, CURLOPT_URL, $source); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec ($ch); curl_close ($ch); $destination = "/asubfolder/afile.zip"; $file = fopen($destination, "w+"); fputs($file, $data); fclose($file); 

file_get_contents не должны использоваться для больших двоичных файлов, потому что вы можете легко поразить ограничение памяти PHP. Я бы exec() wget , указав URL и желаемое имя выходного файла:

 exec("wget $url -O $filename"); 

этот пост работал для меня, чтобы передать файл с одного сервера на другой

http://tareq.wedevs.com/2010/12/simple-server-to-server-file-downloader-script/

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

 <?php define('BUFSIZ', 4095); $url = 'Type The URL Of The File'; $rfile = fopen($url, 'r'); $lfile = fopen(basename($url), 'w'); while(!feof($rfile)) fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ); fclose($rfile); fclose($lfile); ?> в <?php define('BUFSIZ', 4095); $url = 'Type The URL Of The File'; $rfile = fopen($url, 'r'); $lfile = fopen(basename($url), 'w'); while(!feof($rfile)) fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ); fclose($rfile); fclose($lfile); ?> 

Используйте это решение, если вы не знаете формат файла, который собираетесь загрузить.

 $url = 'http:://www.sth.com/some_name.format' ; $parse_url = parse_url($url) ; $path_info = pathinfo($parse_url['path']) ; $file_extension = $path_info['extension'] ; $save_path = 'any/local/path/' ; $file_name = 'name' . "." . $file_extension ; file_put_contents($save_path . $file_name , fopen($url, 'r')) 

Поскольку PHP 5.1.0, file_put_contents () поддерживает запись по частям путем передачи дескриптора потока в качестве параметра $ data:

 file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r')); 

Попробуйте phpRFT: http://sourceforge.net/projects/phprft/files/latest/download?source=navbar

У этого есть progress_bar и простой детектив имени файла …