我正在使用sonicAPI尝试上传文件。出于某种原因,我不能在php中使用curl这样做,因为他们的api需要标志-F模拟从表单发布....((HTTP)这让curl模拟用户按下提交的填写表单按钮)
反正。我必须使用
exec("$curl https://api.sonicapi.com/file/upload?access_id=$accessId -Ffile=@./shortaudio.mp3 2>&1", $output, $exit);
上传文件。引号中的命令直接输入shell时有效。它返回一个xml字符串。但是,当我var_dump($ output)时,我只是得到了#39; loading'在实际shell中执行时实际未显示的信息。我明白了
array(4) {
[0]=>
string(79) " % Total % Received % Xferd Average Speed Time Time Time Current"
[1]=>
string(77) " Dload Upload Total Spent Left Speed"
[2]=>
string(158) "
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 17008 100 249 100 16759 393 26489 --:--:-- --:--:-- --:--:-- 26517"
[3]=>
string(249) ""
}
如何获取应返回的xml字符串?该文件确实上传成功,因此defo应该是一个xml响应。 或者,如果没有,我如何通过php curl模拟表单发布?
答案 0 :(得分:0)
只需使用-o file.xml保存xml响应
答案 1 :(得分:0)
只使用CURLOPT_POSTFIELDS,等效的PHP curl_
代码是
$ch = curl_init ( 'https://api.sonicapi.com/file/upload?access_id=' . $accessId );
curl_setopt_array ( $ch, array (
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array (
'file'=>new CURLFile('shortaudio.mp3')
),
CURLOPT_RETURNTRANSFER=>true
) );
$output=curl_exec($ch);
curl_close($ch);