gpt4 book ai didi

php - 使用 cURL 和 PHP 为同一键和文件上传混合多个值

转载 作者:可可西里 更新时间:2023-10-31 22:42:27 25 4
gpt4 key购买 nike

我遇到了 PHP 的 cURL 绑定(bind)限制。似乎没有简单的方法可以为后域的相同键发送相同的多个值。我遇到的大多数解决方法都涉及手动创建 URL 编码的帖子字段 tag=foo&tag=bar&tag=baz) 而不是使用 CURLOPT_POSTFIELDS 的关联数组版本。

需要支持似乎是一件很常见的事情,所以我觉得我一定错过了什么。这真的是处理同一个键的多个值的唯一方法吗?

虽然这个解决方法可能被认为是可行的(如果不是真的很烦人的话),但我的主要问题是我需要能够为同一个键执行多个值并且还支持文件上传。据我所知,文件上传或多或少需要使用 CURLOPT_POSTFIELDS 的关联数组版本。所以我觉得我被卡住了。

我有posted在 cURL PHP 邮件列表上更详细地讨论了这个问题,希望有人对此有一些想法。

非常感谢关于在哪里可以找到更多信息的建议或提示!

最佳答案

我最终编写了自己的函数来构建带有 multipart/form-data 的自定义 CURLOPT_POSTFIELDS 字符串。好痛苦。

function curl_setopt_custom_postfields($ch, $postfields, $headers = null) {
// $postfields is an assoc array.
// Creates a boundary.
// Reads each postfields, detects which are @files, and which values are arrays
// and dumps them into a new array (not an assoc array) so each key can exist
// multiple times.
// Sets content-length, content-type and sets CURLOPT_POSTFIELDS with the
// generated body.
}

我能够像这样使用这个方法:

curl_setopt_custom_postfields($ch, array(
'file' => '@/path/to/file',
'tag' => array('a', 'b', 'c'),
));

我不确定 CURLOPT_HTTPHEADER 堆栈,因此由于此方法调用它,我确定该函数将允许用户在需要时指定其他 header 。

我有可用的完整代码 in this blog post .

关于php - 使用 cURL 和 PHP 为同一键和文件上传混合多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/402679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com