Amazon 如何像cURL一样构建php cURL命令行

Amazon 如何像cURL一样构建php cURL命令行,amazon,Amazon,我正在使用Amazon CloudDrive 对于API: 当我使用cURL命令行测试将文件上传到clouddrive时,一切正常。比如: curl-v-xpost--form'metadata={“name”:“test.pdf”,“kind”:“FILE”} --表格'content=@test.pdf'' --标题“授权:持有人Atza | IQEBLjAsAhQsfI0yWoBK-FYhjUGJ1DBP1…” --标题“内容类型:多部分/表单数据” 但是PHP不正常,总是返回错误500(

我正在使用Amazon CloudDrive 对于API:

当我使用cURL命令行测试将文件上传到clouddrive时,一切正常。比如:

curl-v-xpost--form'metadata={“name”:“test.pdf”,“kind”:“FILE”} --表格'content=@test.pdf'' --标题“授权:持有人Atza | IQEBLjAsAhQsfI0yWoBK-FYhjUGJ1DBP1…” --标题“内容类型:多部分/表单数据”

但是PHP不正常,总是返回错误500({“message”:“internalfailure”})

PHP代码是:

$url='https://content-na.drive.amazonaws.com/cdproxy/nodes?localId=testupload&suppress=deduplication';
$file=realpath('test.pdf');
$fields[]=array(
    'metadata'=>array(
        'name'=>'testupload',
        'kind'=>'FILE'
    )
);
$fields[]=array(
    'content'=>'@'.$file
);
$fields_string = json_encode($fields);
$headers=array();
$headers[]='Authorization: Bearer '.$auth;
$headers[]='Content-Type: multipart/form-data';
$headers[]='Host: content-na.drive.amazonaws.com';
//open connection
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

$result = curl_exec($ch);  
$httpstatus = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
print_r($result);
//print_r($httpstatus);
curl_close($ch);

如何如上所述从cURL命令行构建PHP cURL?

不太清楚PHP,但您不使用内容替换$fields[]中的元数据吗

另外,$fields不是JSON,它必须是多部分/表单数据。但$fields中元数据键的值应该包含带有名称、父项和种类的JSON

为了以防万一,CURL$file应该是文件的路径,而不是内容