Guzzle ~6.0 多部分和 form_params

新手上路,请多包涵

我正在尝试像这样同时上传文件和发送 post 参数:

 $response = $client->post('http://example.com/api', [
    'form_params' => [
        'name' => 'Example name',
    ],
    'multipart' => [
        [
            'name'     => 'image',
            'contents' => fopen('/path/to/image', 'r')
        ]
    ]
]);

但是,我的 form_params 字段被忽略了,只有多部分字段出现在我的帖子正文中。我可以用 guzzle 6.0 发送两者吗?

原文由 Jordan Dobrev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 626
2 个回答

我遇到了同样的问题。您需要将 form_params 添加到 多部分 数组中。其中“名称”是表单元素名称,“内容”是值。您提供的示例代码将变为:

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

原文由 Simon Crowfoot 发布,翻译遵循 CC BY-SA 3.0 许可协议

我也到了那里,但不幸的是,如果你有多维参数数组,它就不起作用。我让它工作的唯一方法是将 form_paramaters 作为查询参数发送到数组中:

 $response = $client->post('http://example.com/api', [
    'query' => [
        'name' => 'Example name',
    ],
    'multipart' => [
        [
            'name'     => 'image',
            'contents' => fopen('/path/to/image', 'r')
        ]
    ]
]);

原文由 Jordan Dobrev 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏