2

我正在尝试将以下 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);

但是它不起作用。谁能帮我理解为什么我做错了,我可以做些什么来修改我的代码?谢谢!!

4

2 回答 2

2

尝试"Content-Type: multipart/form"从您的CURLOPT_HTTPHEADER选项中删除标题,因为 cURL 会根据您的帖子数据为您处理这个问题。

由于您正在上传文件,内容类型将自动设置multipart/form-data为实际上是正确的内容类型,而不是multipart/form.

于 2013-05-09T21:03:23.290 回答
2

curl -k意味着不安全。添加以下行:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

翻译自德文手册(请注意英文版缺少此信息):

如果 CURLOPT_SSL_VERIFYPEER 已被禁用,则选项 CURLOPT_SSL_VERIFYHOST 也必须被禁用。

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

于 2013-05-09T21:04:08.823 回答