Intereting Posts
Общие функции CRUD в PHP Проверка номеров телефонов Великобритании в PHP Каков наилучший способ реализовать большой (1 ГБ или более) сайт для загрузки файлов на PHP или Java? имеют разные статические URL в динамической странице Лучший способ управления долговременным скриптом php? Можно добавить цвет фона к прозрачному изображению с помощью GD и PHP Скребок с веб-сайта, для которого требуется логин? как реализовать простой Android OAuth и API сервера bootstrap twitter datepicker + modal – календарь на родительском экране вместо модального экрана Длина установки PHP TZ Показать все строки в таблице mysql, а затем дать возможность удалить определенные Не-браузер отправил HTTP-запрос и сеансы PHP file_get_contents () как исправить ошибку «Не удалось открыть поток», «Нет такого файла», Как написать значения, поступающие из ввода формы в json, используя php Получить массив от MySQL до android

Скопировать файл с удаленного сервера или URL

У меня есть следующий код:

$file = 'http://img.ruphp.com/copy/rizal001.jpg'; $newfile = '/img/submitted/yoyo.jpg'; if ( copy($file, $newfile) ) { echo "Copy success!"; }else{ echo "Copy failed."; } 

и он всегда выводит «Копировать не удалось»,

 copy(/img/submitted/yoyo.jpg) [function.copy]: failed to open stream: No such file or directory 

мой каталог установлен в 777.

есть идеи? благодаря!

Хотя copy() будет принимать URL-адрес в качестве исходного аргумента, он может иметь проблемы с URL-адресом для адресата .

Вы пытались указать полный путь файловой системы к выходному файлу? Я предполагаю, что вы не пытаетесь поместить новый файл на удаленный сервер.

Например:

 $file = 'http://img.ruphp.com/copy/rizal001.jpg'; $newfile = $_SERVER['DOCUMENT_ROOT'] . '/img/submitted/yoyo.jpg'; if ( copy($file, $newfile) ) { echo "Copy success!"; }else{ echo "Copy failed."; } 

Выше было хорошо для меня.

Я нашел эту функцию в одном из моих старых проектов.

 private function download_file ($url, $path) { $newfilename = $path; $file = fopen ($url, "rb"); if ($file) { $newfile = fopen ($newfilename, "wb"); if ($newfile) while(!feof($file)) { fwrite($newfile, fread($file, 1024 * 8 ), 1024 * 8 ); } } if ($file) { fclose($file); } if ($newfile) { fclose($newfile); } } 

Если файл не является общедоступным, вы не можете копировать файл с сервера, не имея к нему доступа.

Вы можете использовать ftp_get (), чтобы открыть FTP-соединение и скопировать файл.

 $local_file = 'localname.zip'; // the nam $server_file = 'servername.zip'; $conn = ftp_connect($ftp_server); $login_result = ftp_login($conn, $ftp_user_name, $ftp_user_pass); if (ftp_get($conn, $local_file, $server_file, FTP_BINARY)) { echo "Successfully copied"; } ftp_close($conn); 

Но, если вы хотите загрузить файл с URL-адреса

 $fullPath = "filepath.pdf"; if ($fd = fopen ($fullPath, "r")) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); header("Content-type: application/octet-stream"); header("Content-Disposition: filename=\"".$path_parts["basename"]."\""); header("Content-length: $fsize"); header("Cache-control: private"); //use this to open files directly while(!feof($fd)) { $buffer = fread($fd, 2048); echo $buffer; } } fclose ($fd);