2017-08-03 27 views
0

私はsonicAPIを使ってファイルをアップロードしています。なんらかの理由で私はphp内のcurlを使ってこれを行うことはできません。彼らのapiは、フォームから投稿をエミュレートするフラグ-Fを必要とするからです。((HTTP))これはcurlがユーザがsubmitボタン)PHPのcurlから出力を取得

とにかく。私は使用する必要があります

exec("$curl https://api.sonicapi.com/file/upload?access_id=$accessId [email protected]/shortaudio.mp3 2>&1", $output, $exit); 

ファイルをアップロードする必要があります。引用符で囲まれたコマンドは、シェルに直接入力したときに機能します。 xml文字列を返します。しかし、私がvar_dump($ output)を実行すると、実際のシェルでそれを実行するときに実際には表示されない '読み込み'情報が得られます。私はこれを得る

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

であるあなたは、PHP(5.5以降)でこれを行うことができるはず使用[CURLFile](http://php.net/manual/en/curlfile.construct.php) – iainn

+0

うーん...まだ400のエラーが出ています。この$ cfile = curl_file_create( "shortaudio.mp3"、 'multipart/form-data'、 'shortaudio')を使用します。 –

答えて

0

を保存するには、-o file.xmlを使用して、同等の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); 
0

ただ単にCURLOPT_POSTFIELDSを使用してXML応答

関連する問題