2015-02-21 8 views
0

Мы пытаемся преобразовать с помощью следующей локон CmdLine, который работает отличноPOST файл Curl Commandline в PHP Curl

curl --request POST --data-binary @"/home/project/enrol/my.wav" --header "Content-Type:audio/wav" --header "VsitEmail: [email protected]" --header "VsitPassword: 8270f2824111e04d9278c01a92b388147d9d02e0b50d946d25d00db375ff1282" --header "VsitDeveloperId: 200037" https://siv.voiceprintportal.com/sivservice/api/enrollments 

в PHP Libcurl, которая постоянно дает внутреннюю ошибку.

Пожалуйста, предложите, где я ошибаюсь.

Код

$ch = curl_init(); 

$path="/home/project/enrol/my.wav"; 

curl_setopt($ch, CURLOPT_URL,$url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

curl_setopt($ch, CURLOPT_POST,true); 

curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: audio/wav","VsitEmail: [email protected]","VsitPassword: 8270f2824111e04d9278c01a92b388147d9d02e0b50d946d25d00db375ff1282","VsitDeveloperId: 200037")); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

curl_setopt($ch , CURLOPT_VERBOSE , 0); 

curl_setopt($ch, CURLOPT_POSTFIELDS,array('file' => '@'.$path)); 

$result = curl_exec($ch); 

//close connection 
curl_close($ch); 

print_r($result); 

Update 1

$localfile='/home/project/enrol/my.wav'; 
$url = 'https://siv.voiceprintportal.com/sivservice/api/enrollments'; 

$ch = curl_init(); 
$fields = array('file' => '@' .$localfile); 

$resource = curl_init(); 

curl_setopt($resource, CURLOPT_URL, $url); 
//curl_setopt($resource, CURLOPT_HTTPHEADER, $header); 
curl_setopt($resource, CURLOPT_HTTPHEADER, array("Content-Type: 
audio/wav","VsitEmail: [email protected]","VsitPassword: 8270f2824111e04d9278c01a92b388147d9d02e0b50d946d25d00db375ff1282","VsitDeveloperId: 200037")); 
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($resource, CURLOPT_POST, 1); 
curl_setopt($resource, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($resource, CURLOPT_POSTFIELDS, $fields); 
//$result = json_decode(curl_exec($resource)); 
$result=curl_exec($resource); 
curl_close($resource); 

echo "The result is"; 

print_r($result); 
+0

Проверьте следующий ответ http://stackoverflow.com/a/28637283/1061944 –

+0

, который является сервером загрузки и REST оленьей кожи поддержки .Probably я не получаю правильный способ использования - data-binary @ "/ home/project/enroll/my.wav" в PHP Curl –

+0

вы не задали заголовки в вашем PHP CURL-коде. –

ответ

0

Проверьте следующий код

$url = 'http://google.com'; 
$header = array('Content-Type: multipart/form-data'); 
$fields = array('file' => '@' . $_FILES['file']['tmp_name'][0]); 

$resource = curl_init(); 
curl_setopt($resource, CURLOPT_URL, $url); 
curl_setopt($resource, CURLOPT_HTTPHEADER, $header); 
curl_setopt($resource, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($resource, CURLOPT_POST, 1); 
curl_setopt($resource, CURLOPT_POSTFIELDS, $fields); 
$result = curl_exec($resource); 
curl_close($resource); 
+0

Я изменил поля $ на имя локального файла и заменил HTTPHEADER своим кодом. он дает ту же ошибку внутреннего сервера ошибки. –

+0

обновите свой вопрос с обновленным кодом, с ошибкой, которую вы получаете. Если вы пройдете скриншот ошибки, которую вы получаете. –

+0

почему вы отредактировали мой ответ? обновите свой собственный вопрос. –

0

Он получил Решенный пропусканием необработанный файл данных вместо массива. Правильный код

$localfile='@/home/project/enrol/my.wav'; 
$url = 'https://siv.voiceprintportal.com/sivservice/api/enrollments'; 
$data = file_get_contents('/home/project/enrol/my.wav'); 
$headers = array(); 
$headers[] = 'X-Requested-With: JSONHttpRequest'; 
$headers[] = 'Content-Type: audio/wav'; 
$headers[] = 'VsitEmail: [email protected]'; 
$headers[] = 'VsitPassword: 8270f2824111e04d9278c01a92b388147d9d02e0b50d946d25d00db375ff1282'; 
$headers[] = 'VsitDeveloperId: 200037'; 
$resource = curl_init(); 
curl_setopt($resource, CURLOPT_URL, $url); 
curl_setopt($resource, CURLOPT_HTTPHEADER,$headers); 
curl_setopt($resource, CURLOPT_POST,1); 
curl_setopt($resource, CURLOPT_BINARYTRANSFER, true); 
curl_setopt($resource, CURLOPT_POSTFIELDS,$data); 
$result = json_decode(curl_exec($resource)); 
curl_close($resource); 
echo "The result is"; 
print_r($result);