php - 使用 php (curl) 将 Json 和音频文件发布到 laravel API
问题描述
我正在使用下面的代码将 json 和音频文件发布到我基于 laravel 构建的 api
$endPoint = 'http://localhost:9000/api/audio/send';
$apiKey = 'anvx7P7ackndaD8MvXlufSaG4uJ901raoWIwMPGZ93dkH';
$url = $endPoint . '?key=' . $apiKey;
$curlFile = new \CURLFile('/Users/desktop/myapp/public/Voice/aaaah.wav');
$data = array("request" =>
json_encode(array("test" => "First audio ",'recipient' =>['442342342', '35345242'])) . ";
type=application/json","file" => "@d8696c304d09eb1.wav;type=audio/wav");
$ch = curl_init();
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
$result = json_decode($result, TRUE);
curl_close($ch);
return $result;
当我将我的 json 提交给 api 时,它会从 api 返回 null。意味着没有数据被发布到我的 api。请问我如何将我的 json 和音频文件发布到 laravel api 有什么错误吗?
PS:PHP初学者
解决方案
您不能在 JSON 中发布文件!。
发布文件需要一个普通的 POST 请求(从<form>
元素生成的请求)。
如果您必须使用 JSON 发送文件,请对其进行 base64_encode 并发送。但另一方面,服务器需要先对其进行 base64_decode。
推荐阅读
- javascript - 为什么 Webpack 文件加载器不会触发 CSS url?
- r - 在r中使用atop函数时获得恒定的文本大小
- javascript - 我的第一个字母猜谜游戏与 Javascript
- python - 如何在特定列中以 15 分钟为增量增加时间
- haskell - 您可以仅使用列表单子来确定列表的最小值或最大值吗?
- python - Pandas:从 datetime.datetime 对象转换为 Index / DatetimeIndex 的不一致
- angular - 如何在 Angular Material Datatable 插值中使用三元表达式来显示 html
- spring - 无法加载 TestContextBootstrapper [null]。指定@BootstrapWith 和依赖树确定
- php - 递归PHP函数返回允许的内存大小用尽
- c# - 标签/文本框中单个字符的字体大小与预期不符