2016-03-24 29 views
0

Ich bin mit Amazon Clouddrive Für API bauen: https://developer.amazon.com/public/apis/experience/cloud-drive/content/nodesWie PHP cURL wie als cURL-Befehlszeile

Wenn ich Test-Upload-Datei mit Clouddrive cURL-Befehlszeile, alles in Ordnung ist. Wie:

curl -v -X POST --form 'Metadaten = { "name": "test.pdf", "Art": "FILE"}' --form ‚content = @ test. pdf‘ 'https://content-na.drive.amazonaws.com/cdproxy/nodes?localId=linkvipdata&suppress=deduplication' --header "Authorization: Inhaber Atza | IQEBLjAsAhQsfI0yWoBK-FYhjUGJ1DBP1 ..." --header "Content-Type: multipart/form-data"

Aber PHP ist nicht in Ordnung und immer zurück Fehler 500 ({"Nachricht": "Interner Fehler"})

PHP-Code ist:

$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); 

Wie PHP cURL von cURL Befehlszeile wie oben zu erstellen?

Antwort

0

Nicht sicher über PHP, aber ersetzen Sie nicht Metadaten in $ fields [] mit Inhalt?

Auch Felder $ ist nicht JSON, muss es multipart/form-data sein. Der Wert des Metadatenschlüssels in $ -Feldern sollte jedoch JSON mit , Name, , Eltern und , Art, enthalten.

Und nur für den Fall, für CURL $ Datei sollte Pfad zu Datei, nicht Inhalt sein.