PHP シミュレーション クライアントからサーバー側の PostStream.aspx ページに音声ファイル (arm 形式) を送信する必要があります。方法 1 で指定したパスを使用して送信すると、元の音声よりも少し大きくなります。ファイル、aaa.amr:
---- ------------------------fa24ee50a8c6
Content-Disposition: form-data name= upimg"; filename="aaa.amr"
Content-Type: application/octet-stream
。 。 。音声ファイルのエンコード。 。 。
------------------fa24ee50a8c6--
メモ帳で aaa.amr を開くと、Content-Disposition: XXX と Content-Type: XXX がさらにあることがわかりました。この音声ファイルは絶対に再生できません
これが私のコードです
方法①:
$file = array("audio"=>"@E:/POSTSTREAM/s.amr");//文件路径,前面要加@,表明是文件上传. $curl = curl_init("http://xxx.xxx.xxx.xxx:xxx/ddppls/PostStream.aspx?pack={1411}{615044}{7348}{534310}"); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,$file); $response= curl_exec($curl); curl_close($curl);
方法1はcurl送信時にパスを指定する方法で、私はメソッドを使用します②ストリームを直接送信する ただし、HTTP/1.1 302 Foundの問題が発生し、ファイルは直接送信されませんでした
方法② code:
$data = file_get_contents ( 'php://input' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://xxx.xxx.xxx.xxx:xxx/ddppls/PostStream.aspx?pack={1411}{615044}{7348}{534310}"); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch , CURLOPT_POST , 1); curl_setopt($ch , CURLOPT_POSTFIELDS , $data); $response=curl_exec($ch); curl_close($ch);
今考えているのは、方法① Content-Disposition: XXXとContentを追加しないことです- 送信時に音声ファイルに「XXX」と入力します。ヘッダー情報が送信されないようにするには、curl_setopt のパラメーターを設定する必要があります。ファイルストリームに書き込まれていますか? アドバイスをお願いします。オンラインで待っています。
ヘッダー文を削除する方法