2015-12-14 82 views
1

我想通過echonest api上傳文件(輸入類型和命名爲「上傳」),但我努力讓捲曲上傳工作。上傳曲線,捲曲,echonest POST問題與本地文件

http://developer.echonest.com/docs/v4/track.html#upload

任何人都可以點我到正確的方向,以獲得數據的二進制和標題:應用程序/八位字節流POST方法的工作。 這是一個內容類型爲「application/octet-stream」的HTTP POST請求,本地文件作爲請求的主體,以及URL中的參數。

捲曲PHP:

$localfile = $_FILES['upload']['name']; 
$fp   = fopen($localfile, 'r'); 
$post  = array('$localfile'=>'@$localfile','api_key'=>'xx','filetype'=>'mp3'); 
$ch   = curl_init(); 

curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); // --data-binary 
curl_setopt($ch, CURLOPT_URL, 'http://developer.echonest.com/api/v4/track/upload'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_HTTPHEADER, 'Content-type: application/octet-stream'); 

$response = curl_exec($ch); 
$result  = json_decode($response,true); 
$id   = $result['response']['track']['id']; 

curl_close($ch); 
fclose($fp); 

echo $id; 

回答

0

這個問題可能有一些做與您使用的變量單引號字符串中。此外,不正確使用@符號。試試這個......

array("$localfile"=>"$localfile",'api_key'=>'xx','filetype'=>'mp3'); 

雖然這看起來不正確。你可能想要這個..

array("localfile"=>"$localfile",'api_key'=>'xx','filetype'=>'mp3');