如何使用PHP/Curl将文件发布到restfulapi?

如何使用PHP/Curl将文件发布到restfulapi?,php,curl,pipedrive-api,Php,Curl,Pipedrive Api,我正在尝试使用PHP/Curl将我网站上的头像图像发布到pipedrive。这些文档需要多部分/表单数据编码。我似乎无法获得要发布的实际文件。我尝试了几种方法从各种how-to发送文件,但每次pipedrive返回“无附加文件”。我已将当前尝试粘贴到下面,有什么想法吗?或者给我举一个可行的例子 $ch = curl_init(); $timeout = 10; curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CU

我正在尝试使用PHP/Curl将我网站上的头像图像发布到pipedrive。这些文档需要多部分/表单数据编码。我似乎无法获得要发布的实际文件。我尝试了几种方法从各种how-to发送文件,但每次pipedrive返回“无附加文件”。我已将当前尝试粘贴到下面,有什么想法吗?或者给我举一个可行的例子

$ch = curl_init();
$timeout = 10;
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_INFILESIZE, $params['filesize']);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER,
   array('Content-Type:multipart/form-data')
);
$data = curl_exec($ch);

$params = array(
    'id' => $PDid,
    'file' => plugin_dir_path( dirname( __FILE__ )).'tmp/'.$filename,
    'filesize' => filesize(plugin_dir_path( dirname( __FILE__ )).'tmp/'.$filename)
);
  • 在使用脚本之前,需要在脚本顶部设置
    $params
    变量。在底层对你没有好处

  • 请阅读文档并按照其中的示例进行操作

  • 具体来说,您应该如下设置相关的文件选项:

    // Create a CURLFile object
    $cfile = new CURLFile('cats.jpg','image/jpeg','test_name');
    
    // Assign POST data
    $params = array('test_file' => $cfile);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    

    在您发布的代码中,您似乎缺少
    CURLOPT\u POST
    。您的
    CURLOPT_POSTFIELDS
    不起作用,因为正如我所说,
    $params
    尚未初始化。

    谢谢。我没有正确地传递文件。当我合并CURLFile()类时,它工作得很好。$params数组是在另一个类中定义的,并传递给我的curl包装器。我应该把它放在上面的,抱歉搞混了。