5 простых способов отправки POST-запросов с загрузкой файлов в Guzzle

В веб-разработке отправка POST-запросов с загрузкой файлов является распространенной задачей. Guzzle — это мощная библиотека PHP, которая упрощает выполнение HTTP-запросов, включая обработку загрузки файлов. В этой статье мы рассмотрим пять простых способов отправки запросов POST с загрузкой файлов с помощью Guzzle. Так что хватайте свой любимый напиток и вперед!

Метод 1: использование метода request
Самый простой способ отправить запрос POST при загрузке файлов в Guzzle — использовать метод request. Вот пример:

use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;
$client = new Client();
$response = $client->request('POST', 'https://example.com/upload', [
    RequestOptions::MULTIPART => [
        [
            'name'     => 'file',
            'contents' => fopen('/path/to/file.jpg', 'r'),
            'filename' => 'file.jpg',
        ],
    ],
]);

Метод 2: использование метода post.
Другой вариант – использование метода post, который обеспечивает более краткий синтаксис:

$response = $client->post('https://example.com/upload', [
    RequestOptions::MULTIPART => [
        [
            'name'     => 'file',
            'contents' => fopen('/path/to/file.jpg', 'r'),
            'filename' => 'file.jpg',
        ],
    ],
]);

Метод 3. Использование метода send.
Если вы предпочитаете подход более низкого уровня, вы можете использовать метод send:

$request = new \GuzzleHttp\Psr7\Request('POST', 'https://example.com/upload');
$response = $client->send($request, [
    RequestOptions::MULTIPART => [
        [
            'name'     => 'file',
            'contents' => fopen('/path/to/file.jpg', 'r'),
            'filename' => 'file.jpg',
        ],
    ],
]);

Метод 4. Использование метода attach.
Для более простых случаев использования вы можете использовать метод attach, чтобы добавить загрузку файлов в ваш запрос:

$response = $client->post('https://example.com/upload')
    ->attach('file', fopen('/path/to/file.jpg', 'r'), 'file.jpg');

Метод 5: использование метода requestAsync.
Если вам нужно отправить запрос асинхронно, Guzzle предоставляет метод requestAsync:

$promise = $client->requestAsync('POST', 'https://example.com/upload', [
    RequestOptions::MULTIPART => [
        [
            'name'     => 'file',
            'contents' => fopen('/path/to/file.jpg', 'r'),
            'filename' => 'file.jpg',
        ],
    ],
]);
$promise->then(function ($response) {
    // Handle response
});

В этой статье мы рассмотрели пять простых способов отправки запросов POST с загрузкой файлов с помощью Guzzle. Независимо от того, предпочитаете ли вы высокоуровневый или низкоуровневый подход, Guzzle предоставляет ряд опций, отвечающих вашим потребностям. Используя возможности Guzzle, вы можете легко обрабатывать загрузку файлов в своих PHP-приложениях. Так что попробуйте эти методы в своем следующем проекте!