php - 无法提交语音文件 - PHP & Laravel
问题描述
我正在尝试通过从我的申请表发布到我的 API 来在我的申请中提交语音文件。检查我的代码中的数据,我看到除了我的文件之外的所有数据都已提交。但是,我无法说出为什么文件不会被提交。我enctype='multipart/form-data'
在我的代码中加入了修复程序,但这不起作用。
关于为什么我的文件没有被发布但返回false的任何想法?
API
public function API()
{
$codeAPI = $request->get('key');
if (empty($codeAPI)) {
return response()->json([
'status' => 'error',
'message' => 'code is not specified',
'receipient' => $recipients,
'file' => $request->hasFile('file');
]);
}
控制器
public function testAPI()
{
$endPoint = 'http://127.0.0.1:9000/api/';
$codeKey= '';
$url = $endPoint . '?key=' . $apiKey;
$curlFile = $request->get('file');
$data = [
'recipient' => ['9901231001', '1239131001'],
'content' => 'Learning API'
'file' => $curlFile,
];
$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, json_encode($data));
$result = curl_exec($ch);
$result = json_decode($result, TRUE);
return $result;
curl_close($ch);
}
HTML
<form class="form" method="POST" action="/test/api" >
{!! csrf_field() !!}
<div class="form-body">
<div class="form-group">
<label for="eventRegInput2">File</label>
<input type="file" name="file" id="placeholder">
</div>
<div class="form-actions right">
<button type="submit" class="btn btn-primary square btn-min-width mr-1 mb-1" >Submit</button>
</button>
</div>
</div>
</form>
结果
{"status":"error","message":"code key is not
specified","receipient":["9901231001","1239131001"],
"content":{Learning API},"file":false}
解决方案
您需要使用$request->file('file')
而不是$request->get('file')
获取文件输入。并确保您enctype='multipart/form-data'
在表单中添加。
public function testAPI()
{
$endPoint = 'http://127.0.0.1:9000/api/';
$codeKey= '';
$url = $endPoint . '?key=' . $apiKey;
$curlFile = $request->file('file');
$data = [
'recipient' => ['9901231001', '1239131001'],
'content' => 'Learning API'
'file' => $curlFile,
];
$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, json_encode($data));
$result = curl_exec($ch);
$result = json_decode($result, TRUE);
return $result;
curl_close($ch);
}
推荐阅读
- javascript - FullCalendar 添加资源默认事件值
- drools - Drools 说订单和产品类型不匹配
- amazon-web-services - 如何根据大小将大 s3 文件拆分为多个文件?
- tensorflow - 需要帮助了解 tf.contrib.layers.fully_connected 训练权重
- javascript - 在画布中设置背景图像(织物js)
- jquery - rgraph SVG得到0的宽度和高度
- typescript - 将加载事件侦听器添加到对象元素时的加载循环
- python - 如何访问嵌套 json 文件中的子字典值?
- reactjs - 如何在 React.js 中修改现有的 PDF?
- javascript - 不支持 Qt Creator Javascript ES6 语法?