如何使用GuzzleHttp像-transfer.sh一样通过--upload-file进行curl调用?

时间:2019-05-18 14:34:20

标签: curl guzzle

我需要使用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 :(得分:0)

您需要指定HTTP POST 方法并形成多部分数据     

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/curl-examples#files