Как переместить изображение на другой сервер PHP - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть два сервера, поэтому я хочу, чтобы при загрузке файла / изображения с первого сервера (используя функцию перемещения загруженного файла) файл должен был быть загружен на второй сервер. Для этого я использовал следующий код

$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);

но я хочу знать, какой код должен быть на вторых серверах "upload.php". И как мне указать путь?

1 Ответ

0 голосов
/ 16 ноября 2018

Во-первых, не пытайтесь загружать файлы с помощью метода @, он устарел в PHP5.5, отключен по умолчанию в PHP5.6 и полностью удален в PHP7.0.используйте CURLFile для загрузки файлов.чтобы упомянуть путь, просто добавьте путь как другую переменную post в массиве.Что касается получателя, прочитайте об обработке загрузки файлов в статье php на php.net.наконец, подумайте, хотите ли вы, чтобы любой, кто находит URL, мог загружать любой файл или нет.(вероятно, нет, вы * вероятно * хотите установить пароль при загрузке), например,

curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    'file' => new CURLFile('path/to/file.jpg'),
    'path' => '/where/ever/you/want.jpg',
    'password' => 'd540cyLp419rdwelv8c-'
));

для отправителя и

if (! hash_equals(hash('sha256', 'd540cyLp419rdwelv8c-', true), hash('sha256', (string) ($_POST['password'] ?? ''), true))) {
    http_response_code(403); // forbidden
    die("wrong/missing password.");
}
$upload_path = $_FILES["file"]["tmp_name"];
$requested_file_path = $_POST['path'];

для получателя, опять же, смотрите вышеупомянутое "Обработка загрузки файлов в php "статья, чтобы узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...