我正在尝试使用PHP / Curl将我的网站上的头像图片发布到pipedrive。文档需要多部分/表单数据编码。我似乎无法获得要发布的实际文件。我已经尝试了几种方法从各种方法发送文件,但每次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)
);
答案 0 :(得分:1)
在使用脚本之前,需要在脚本顶部设置$params
变量。你不擅长底层。
阅读CURLFile的文档并按照示例进行操作。
具体来说,您应该设置相关的文件选项:
// 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_POST
。并且您的CURLOPT_POSTFIELDS
无效,因为正如我所说$params
尚未初始化。