Отправка файлов с помощью curl

апрель 23 , 2015
Метки:

Иногда бывает нужно отправить на удаленный сервер не просто числа и строки, а какие-то файлы. Отправка файлов с помощью curl не такое и сложное дело, как кажется на первый взгляд. Дальше простой пример, как это сделать на PHP.

Это очень похоже на отправку обычных строк. Чтобы файл "ушел" на сервер, нужно указать его полный путь, добавив в начало собачку @. Покажем, как отправить некоторые данные вместе с файлами.

    if($curl=curl_init()) {
        $data = array(
            'name' => 'John',
            'city' => 'London',
            'photo' => '@/home/mysite/tmp/photo_john.jpg',
            'document' => '@/home/mysite/tmp/document_john.pdf'
        );
        
        curl_setopt($curl, CURLOPT_URL, 'http://mysite.com/script.php');
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($curl);
        curl_close($curl);
        // Обработка результатов, полученных от сервера в переменную $result
        ...
    }

Как видим из кода, сначала мы инициализируем объект curl, затем в массиве data готовим данные для отправки на удаленный сервер. name и city - обычные текстовые строки, а photo и document - нужные файлы. В нашем случае мы отправляем картинку и документ pdf, но точно так же можно отправить любой файл. Главное, чтобы тип файла поддерживался принимающей стороной :-) Сама отправка идет методом post. Параметр CURLOPT_RETURNTRANSFER устанавливается в true, если мы ожидаем какой-то ответ от сервера по итогам передачи, например, код, сооощающий об успехе или неудаче отправки. Этот результат возвращается в переменную $result.

Разумеется, Вам нужно самим позаботиться о том, как эти файлы попадут на Ваш сервер до отправки на удаленный. Например, это какие-то фото или документы, которые отправит клиент из своего браузера через форму с кодировкой multipart/form-data.

Метки:
Заходите в группу в контакте - https://vk.com/webdevkin
Анонсы статей, обсуждения интернет-магазинов, vue, фронтенда, php, гита.
Истории из жизни айти и обсуждение кода.
Как Вам статья? Оцените!