Intereting Posts

Загрузить файл с php на другой php-сервер

Я не спрашиваю о загрузке файла из браузера в 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

Удачи.