和php的curl一样,使用cURL和PHP为相同的键和文件上载混合多个值

我在PHP的cURL绑定中遇到了限制.似乎没有简单的方法为postfields发送相同的多个值.我遇到的大部分解决方法都涉及手工创建URL编码的帖子字段tag = foo& tag = bar& tag = baz),而不是使用CURLOPT_POSTFIELDS的关联数组版本.

这似乎是一个非常普遍的需要支持,所以我觉得我一定错过了什么.这真的是处理同一个键的多个值的唯一方法吗?

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

我在cURL PHP邮件列表上有更详细的关于这个问题的posted,希望有人对此有一些想法.

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

解决方法:

我最终编写了自己的函数来构建一个带有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堆栈,所以由于这个方法调用它,我确定该函数允许用户在需要时指定额外的头文件.

标签:php,curl

来源: https://codeday.me/bug/20191004/1854615.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值