转换要在php函数中使用的cURL

转换要在php函数中使用的cURL,php,curl,box-api,box,Php,Curl,Box Api,Box,目前我正在平台上工作,正在尝试将文件上载到box服务器。Box使用cURL上传文件,我正试图从php发送cURL请求。到目前为止,我已经将大多数cURL命令转换为php术语,但我不知道如何传入要上载的文件的属性(名称、路径、包含文件夹) 这是卷发 curl https://upload.box.com/api/2.0/files/content -H "Authorization: Bearer APP_USER_TOKEN" -X POST -F attributes='{"name":"Jo

目前我正在平台上工作,正在尝试将文件上载到box服务器。Box使用cURL上传文件,我正试图从php发送cURL请求。到目前为止,我已经将大多数cURL命令转换为php术语,但我不知道如何传入要上载的文件的属性(名称、路径、包含文件夹)

这是卷发

curl https://upload.box.com/api/2.0/files/content -H "Authorization: Bearer APP_USER_TOKEN" -X POST -F attributes='{"name":"Jon_Snow.jpeg", "parent":{"id":"0"}}' -F file=@Jon_Snow.jpeg
下面是不完整cURL命令的php版本

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://upload.box.com/api/2.0/files/content");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "Authorization: Bearer ".json_decode($accessToken, true )['access_token'];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
如何执行cURL命令的最后一部分,即

-F attributes='{"name":"Jon_Snow.jpeg", "parent":{"id":"0"}}' -F file=@Jon_Snow.jpeg
编辑:“可能重复”的建议不准确,我想问一种方法,以
-F attributes='{“name”:“Jon_Snow.jpeg”,“parent”:{“id”:“0”}}的形式向上传的文件添加属性。
我看不出建议的答案有什么相关性

试试这个:

-F选项表示您正在发送包含名称和内容的帖子字段。本例中的内容来自文件,因为您正在使用@prefix

请尝试以下操作:


-F选项表示您正在发送包含名称和内容的帖子字段。本例中的内容来自文件,因为您正在使用@prefix找到答案,我需要对属性数组进行
json\u编码,然后使用
new\CURLFile()
函数来创建文件句柄,但它不能与
realpath()一起使用


找到答案后,我需要对属性数组进行
json\u编码,然后使用
new\CURLFile()
函数来创建一个文件句柄,它不适用于
realpath()


请添加链接的相关部分,以便在链接失效时为用户提供帮助。您是否检查了帖子的制作时间,功能是否与php 5.5+配合使用我正在使用php 5.6请添加链接的相关部分,以便在链接失效时为用户提供帮助。您是否检查了帖子的制作时间,函数与PHP5.5+配合使用我使用的是PHP5.6可能的重复项这不仅仅是使用cURL上传文件,请注意命令的属性部分是嵌套属性。可能的重复项这不仅仅是使用cURL上传文件,请注意命令的属性部分是嵌套属性。
$attributes = array('name'=>$fileName,'parent'=>array('id'=>$folderId));
$file = new \CURLFile($filePath);
$fields = array('attributes' => json_encode($attributes), 'file' => $file);
$headers = array("Authorization: Bearer ".$accessToken);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uploadUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);

$result = curl_exec($ch);