You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中使用CURLfile通过CURL批量上传文件失败:仅单个文件被发送

解决PHP CURL发送多个CURLFile文件时仅单个文件生效的问题

你遇到的问题根源很明确:PHP的关联数组不允许重复的键名。你在构建CURLOPT_POSTFIELDS和测试数组时,两次使用了'attachments[]'作为键,后面的CURLFile对象直接覆盖了前面的,所以最终数组里只剩最后一个文件,自然发送时也只会传一个。

Postman能正常工作是因为它在处理表单数据时,会自动把同名的参数包装成数组结构,但PHP里手动构建数组时必须明确这种结构,不能重复用同一个键。

正确的写法有两种:

方式1:将attachments作为数组键,值为CURLFile对象的数组(推荐)

直接把多个文件放到attachments对应的数组里,curl会自动处理成attachments[]的表单格式:

<?php 
$curl = curl_init(); 
curl_setopt_array($curl, array( 
    CURLOPT_URL => 'https://app.karzoun.chat/api/v1/accounts/1/conversations/63/messages', 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => '', 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 0, 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => 'POST', 
    CURLOPT_POSTFIELDS => array(
        'attachments' => array(
            new CURLFILE('gAbs95dfl/karzoun whatsapp api.jpg'),
            new CURLFILE('gAbs95dfl/karzoun-security.png')
        ),
        'content' => 'test',
        'message_type' => 'outgoing'
    ), 
    CURLOPT_HTTPHEADER => array( 
        'api_access_token: uKigRL93m5MjdzC2rm4dHCjr' 
    ), 
)); 
$response = curl_exec($curl); 
curl_close($curl); 
echo $response; 
?>

方式2:使用带索引的键名

手动指定每个文件的索引,比如attachments[0]、attachments[1],这种方式和Postman生成的表单格式完全一致:

CURLOPT_POSTFIELDS => array(
    'attachments[0]'=> new CURLFILE('gAbs95dfl/karzoun whatsapp api.jpg'),
    'attachments[1]'=> new CURLFILE('gAbs95dfl/karzoun-security.png'),
    'content' => 'test',
    'message_type' => 'outgoing'
),

测试数组的正确写法

修改你的测试代码,验证数组结构:

$array = array(
    'attachments' => array(
        new CURLFILE('/path/to/local/file1.png'),
        new CURLFILE('/path/to/local/file2.png')
    )
); 
var_dump($array);

此时var_dump会输出包含两个CURLFile对象的数组,而不是被覆盖后的单个对象。

额外注意

CURLFILE需要传入服务器本地文件的路径,不能直接用远程URL(你测试代码里用了https://开头的URL,这会导致curl无法读取文件,需要先把远程文件下载到本地再使用)。

内容的提问来源于stack exchange,提问作者MKarzoun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:57:28