使用curl上传跟踪,使用本地文件回显最快的POST问题

时间:2015-12-14 20:09:12

标签: php curl http-post echonest

我正在尝试通过echonest api上传文件(输入类型并命名为“upload”),但我正在努力让卷曲上传工作。

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

任何人都可以指出我正确的方向来获取数据二进制文件和头文件:application / octet-stream POST方法正常工作。 这是一个带有Content-Type“application / octet-stream”的HTTP POST请求,本地文件作为请求的主体,以及URL中的参数。

curl 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;

1 个答案:

答案 0 :(得分:0)

问题可能与您在单引号字符串中使用变量有关。另外,@符号的使用不当。试试这个......

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

虽然看起来也不正确。你可能想要这个..

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