Я не спрашиваю о загрузке файла из браузера в php-скрипт, об этом уже много учебников. Я спрашиваю об этом:
У меня есть php-скрипт, который принял файл от пользователя, а файл находится на жестком диске сервера 1. Я хочу загрузить файл с сервера 1 в php-скрипт на сервере 2, используя обычный протокол HTTP-протокола , поэтому скрипт php на сервере 2 можно записать в виде стандартного обработчика загрузки файлов.
Я не могу найти учебник в Интернете, потому что все говорят о браузере -> server1. Учебники по php upload all говорят о ftp, но я не хочу использовать этот протокол.
Пожалуйста помоги?
Вы можете использовать CURL для этого. Что-то вроде этого должно это сделать.
$ch = curl_init(); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@/path/to/file.txt')); curl_setopt($ch, CURLOPT_URL, 'http://server2/upload.php'); curl_exec($ch); curl_close($ch);
Затем вы можете обрабатывать часть server2 как обычную загрузку файла. См. curl_setopt()
для получения дополнительной информации об этих параметрах.
Вы можете использовать SOAP для отправки файла с одного сервера на другой.
Получающий сервер:
<?php $server = new Soap_Server( null, array('uri'=>'somerui') ); $server->addFunction( 'receiveFile' ); function receiveFile( $file ) { file_put_contents( 'somepath', base64_decode( $file ) ); } ?>
Отправляющий сервер:
<?php $client = new Soap_Client( null, array('uri'=>'somerui') ); $client->receiveFile( base64_encode( file_get_contents( 'somepath' ) ); ?>
Вам нужны два скрипта.
Первый скрипт, который будет эмулировать поведение браузера, получит файл и отправит его в сценарий секунд, который будет обрабатывать его так же, как обычный сценарий загрузки файлов.
Мое предположение, что вы должны использовать «http_post_fields» для первого скрипта, он, похоже, обрабатывает файлы. http://us2.php.net/manual/en/function.http-post-fields.php
Удачи.