无法通过guzzle上传带有数据的文件

时间:2015-08-20 02:15:49

标签: php guzzle

我想上传一个带有数据参数的文件,但它不起作用。

$client->post('http://xxx/', [
    'json' => [
        'abc' => 'abc'
    ],
    'multipart' => [
        [
            'name'     => 'file',
            'contents' => fopen('xxx.sh', 'r')
        ]
    ],
]);

它只发布abc参数。它只能在我删除json参数时发布文件 我想上传文件并在一个请求中发布一些数据,我该怎么做?

2 个答案:

答案 0 :(得分:0)

请注意 multipart不能与form_params选项一起使用。您将需要使用其中一个。将form_params用于application / x-www-form-urlencoded请求,将multipart用于multipart / form-data请求。

来自:http://docs.guzzlephp.org/en/latest/request-options.html#multipart

这样做:

$ response = $ client-> post('http://example.com/api',[     'multipart'=> [         [             'name'=> '图片',             'contents'=> fopen('/ path / to / image','r')         ]         [             'name'=> '名称',             'contents'=> '示例名称'         ]     ] ]);

来自:Guzzle ~6.0 multipart and form_params

进行。

答案 1 :(得分:0)

为了发送JSON信息,必须使用Multipart消息发送它。 Multipart不能与任何其他与身体相关的请求选项混合使用。来自Guzzle所有者的验证:https://github.com/guzzle/guzzle/issues/1386