Подтвердить что ты не робот

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

Я не спрашиваю о загрузке файла из браузера в php script, там уже много учебников об этом. Я спрашиваю об этом:

У меня есть php script, который принял файл от пользователя, а файл находится на жестком диске сервера 1. Я хочу загрузить файл с сервера 1 на PHP скрипт на сервер 2, используя обычный протокол HTTP-протокола, поэтому PHP скрипт на сервере 2 можно записать в качестве стандартного обработчика загрузки файлов.

Я не могу найти учебник в Интернете, потому что все говорят о браузере- > server1. Учебники по php upload all говорят о ftp, но я не хочу использовать этот протокол.

Пожалуйста, помогите?

4b9b3361

Ответ 1

Вы можете использовать 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().

Ответ 2

Вы можете использовать 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' ) );
?>

Ответ 3

Вам нужны два скрипта.

Сначала script, который будет эмулировать поведение браузера, он возьмет файл и отправит его в секундах script, который будет обрабатывать его так же, как обычная загрузка файла script.

Мое предположение, что вы должны использовать "http_post_fields" для первого script, он, кажется, обрабатывает файлы. http://us2.php.net/manual/en/function.http-post-fields.php

Удачи.