我正在尝试将以下cURL命令转换为PHP。
curl -k https://api.box.com/2.0/files/content -H "Authorization: Bearer 8tuuIMsrf3ShyODVdw" -F filename=@txt.txt -F folder_id=0
这是我的尝试:
$url = 'https://api.box.com/2.0/folders/content';
$params['filename'] = '@txt.txt';
$params['folder_id'] = '0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer ".$this->access_token, "Content-Type: multipart/form"));
$data = curl_exec($ch);
curl_close($ch);
然而,它不起作用。任何人都可以帮助我理解为什么我在做什么是错的,我可以做些什么来修改我的代码?谢谢!
答案 0 :(得分:2)
尝试从"Content-Type: multipart/form"
选项中删除标题CURLOPT_HTTPHEADER
,因为cURL会根据您的帖子数据为您处理此问题。
由于您要上传文件,因此内容类型将自动设置为multipart/form-data
,这实际上是正确的内容类型,而不是multipart/form
。
答案 1 :(得分:2)
curl -k
意味着不安全。添加以下行:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
翻译自德语手册(请注意,英文版缺少此信息):
如果已停用CURLOPT_SSL_VERIFYPEER,则还必须禁用选项CURLOPT_SSL_VERIFYHOST。
其余代码应该可以正常工作。