Отправка файлов посредством cURL

Все мы знакомы с такой замечательной вещью как curl. Все его особенности сегодня я не собираюсь перечислять, а в данной заметке я опишу небольшой рецепт по отправке файлов с помощью cURL

В принципе на статью это даже и не тянет – просто небольшой рецептик.

Все очень и очень просто. cURL может отправлять локальные файлы, и для этого перед полным путем к файлу нужно поставить “@“.
И все.
После этого cURL передаст его в массив $_FILES и с ним можно будет производить все действия.

Для наглядности покажу пример.
Создадим первый файл – index.php

$postData['image'] = '@' . __DIR__ . DIRECTORY_SEPARATOR . '1.png';
$postData['data'] = 'any text';

$ch = curl_init('http://test.local/post.php');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$response = curl_exec($ch);
echo $response;

Как видите (2 строка), в туже папку где лежит скрипт, я положил картинку 1.png и сейчас будем ее отправлять.
Создадим файл post.php со следующим содержанием

echo 'REQUEST' . "n";
print_r($_REQUEST);
echo 'FILES' . "n";
print_r($_FILES);

Выведем массив с текстовой информацией ($_REQUEST в нашем случае должен вывести ‘any text‘ – 3 строка файла index.php), и массив с файлами ($_FILES)
А на выводе мы получаем следующее

REQUEST
Array
(
    [data] => any text
)
FILES
Array
(
    [image] => Array
        (
            [name] => 1.png
            [type] => application/octet-stream
            [tmp_name] => /tmp/phpFMWYFd
            [error] => 0
            [size] => 94383
        )

)

Как видите – все работает. Надеюсь данная заметка поможет кому либо сохранить время.

[Всего голосов: 0    Средний: 0/5]

Добавить комментарий

Ваш e-mail не будет опубликован.