Серверная отправка файла по cURL

283
19 декабря 2016, 19:26

На сервере есть 3 файла:

  • sender.php - отправитель файла
  • reciever.php - получатель файла
  • forSend/img.jpg - файл для отправки

sender.php должен отправить файл forSend/img.jpg на reciever.php, получить ответ от ресивера и показать его на экран.

sender.php

<?php 
$server = 'http://192.168.56.101/reciever.php';
$curl = curl_init($server);
curl_setopt($curl, CURLOPT_POST, TRUE);
$fileLocation = realpath(getcwd().'/forSend/img.jpg');
echo 'is real file:';
var_dump(is_file($fileLocation));
$data = array(
    'file' => "@{$fileLocation}",
);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($curl);
echo '<br><b>RESPONSE</b><br>';
if (curl_errno($curl)){
    echo '<span style="color:red">';
    echo curl_error($curl);
    echo '</span>';
} else {
    echo '<span style="color:green">';
    echo $response;
    echo '</span>';
}
curl_close($curl);

reciever.php

<?php
echo var_dump($_FILES);

Вывод после запроса:

is real file:bool(true) 
RESPONSE
array(0) { }

Как же передать файл forSend/img.jpg через cURL?

UPD1:

var_dump($_POST)

array(1) { ["file"]=> string(38) "@/usr/share/nginx/html/forSend/img.jpg" }

var_dump($_FILES)

array(0) { }

Answer 1

На текущий момент отправка файлов через @ является deprecated, и в новых версиях отключена по умолчанию. Следует использовать CURLFile, попробуйте код представленный ниже, возможно это решит вашу проблему.

$data = array(
    'file' => new CURLFile($fileLocation,'image/jpeg','img')
);
Answer 2

Попробуйте вот так:

$data = array(
'file' => "@${fileLocation}",
);

или

$data = array(
 'file' => "@" . $fileLocation,
);
READ ALSO
Как в simple html dom модифицировать страницу

Как в simple html dom модифицировать страницу

К примеру добавить в head какой то скрипт или стиль, или изменить содержимое span в приведенном ниже коде?

188
Объявление структуры через typedef

Объявление структуры через typedef

Сам вопрос, в общем, зачем класс обзывать (_AAHDR) в самом конце? Перерыл много книг, но так и не понял, зачем так делать

279
Символы в ссылке

Символы в ссылке

Здравствуйте,программно создаю ссылку,следующим методом: В span (contenteditable="true") вводиться текст,затем при нажатии на кнопку появляется promt туда...

271
Ошибка в логике рисования линий js [закрыто]

Ошибка в логике рисования линий js [закрыто]

Прямые не проходят через узел(точку 0 0)На этой странице я ищу корни системы Д

263