curl POST-F到php curl

curl POST-F到php curl,php,curl,Php,Curl,我试图将一个本地文件发布到一个API,如果我使用命令行curl,它就可以工作,但当我尝试使用php curl时,它就不能工作。我为标题和正文设置了一些变量 $headers = array(); $headers[] = 'Authorization: Passcode '.$passcode; $headers[] = 'FileType: STD'; $api_url = 'https://url.com'; $field_json = json_encode($field).';type

我试图将一个本地文件发布到一个API,如果我使用命令行curl,它就可以工作,但当我尝试使用php curl时,它就不能工作。我为标题和正文设置了一些变量

$headers = array();
$headers[] = 'Authorization: Passcode '.$passcode;
$headers[] = 'FileType: STD';

$api_url = 'https://url.com';
$field_json = json_encode($field).';type=application/json'
$filepath = realpath('path/file.csv');
$file = new CURLFile($filepath,'text/csv');
如果我将它设置为字符串并使用exec,那么基于API规范的curl就可以工作

$cmd = "curl -X POST -H \"$headers[0]\" -H \"$headers[1]\" -F \"field=$field_json\" -F \"filename=@$filepath\" $api_url";

exec($cmd,$result); //This works successfully
但是,当我尝试使用以下PHP cURL代码发送帖子时,我得到了一个模糊的错误响应“意外错误”

    $body = array(
            'field' => $field_json,
            'filename' => $file
            );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    //curl_setopt($ch, CURLOPT_SAFE_UPLOAD, FALSE);

    $result = curl_exec($ch);

    curl_close($ch);
    echo json_encode($result);
我正在使用PHP5.5.9,并尝试使用旧的方法使用@和文件路径