将cURL命令转换为PHP

时间:2013-05-09 21:00:36

标签: php curl box-api

我正在尝试将以下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);
然而,它不起作用。任何人都可以帮助我理解为什么我在做什么是错的,我可以做些什么来修改我的代码?谢谢!

2 个答案:

答案 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。

其余代码应该可以正常工作。