Как использовать GuzzleHttp, чтобы сделать вызов curl с --upload-файлом, как с Transfer.sh? - PullRequest
0 голосов
/ 18 мая 2019

Мне нужно загрузить файл с помощью PHP, и я использую Transfer.sh для этого.

curl - файл загрузочного файла https://transfer.sh/

И я не уверен, как загрузить файл с помощью GuzzleHttp. Я уже пробовал использовать,

$body = fopen('/path/to/file', 'r');

$r = $client->request('POST', 'http://httpbin.org/post', ['body' => $body]);

У моего текущего метода есть эти две строки.

$body = fopen($path, 'r');

$link = $this->client->request('GET', 'https://transfer.sh/', [
            'body' => $body
        ])->getBody();

1 Ответ

0 голосов
/ 27 мая 2019

Вам необходимо указать HTTP POST метод и форму multipart data

require_once 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;

$httpClient = new Client();

$response = $httpClient->post(
    'https://transfer.sh',
    [
        RequestOptions::MULTIPART => [
            [
                'name' => 'file',
                'contents' => new SplFileObject(__DIR__ . '/resource/file.txt', 'r'),
                'filename' => 'file.txt',
            ]
        ],
    ]
);

var_dump($response->getBody()->getContents());

// Output: https://transfer.sh/sXusw/file.txt

Больше примеров здесь https://github.com/andriichuk/php-curl-cookbook#files

...