php - POST文件Curl命令行到PHP Curl

标签 php api rest audio curl

我们正在尝试使用以下 curl 的cmdline进行转换,效果很好

curl --request POST --data-binary @"/home/project/enrol/my.wav" --header "Content-Type:audio/wav" --header "VsitEmail: 200037test2@test.com" --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: 200037test2@test.com","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);

更新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: 200037test2@test.com","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);

最佳答案

检查以下代码

$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);

关于php - POST文件Curl命令行到PHP Curl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28643073/

相关文章:

php - "message": "Method Illuminate\\Auth\\SessionGuard::factory does not exist.",

javascript - Ajax 请求不处理 POST 变量

php - 如何使用 LightOpenID 从提供商那里获取帐户数据?

php - 检测字符串中的 HTML 标签

api - Office 365 API ErrorAccessDenied(访问被拒绝。检查凭据并重试。)

php - 如何在 Yii2 restful controller 中执行额外的任务?

django - 使用 tastypie 的 REST url

api - 使用 Hadoop Flume 检索 google 分析数据

azure - 使用 Azure 存储 REST API 版本 >= 2019-02-02 指定文件系统属性

java - 子资源和 CDI 注入(inject)问题