Я пытаюсь разместить данные, используя cURL в моей конечной точке, которая построена на Laravel. В моем контроллере API, где я получаю данные, я могу получить все данные, кроме моего медиа-файла. Я проверяю наличие файла, используя $request->hasFile('file')
, но он возвращает false. Я также пытаюсь получить файл, используя $request->file('file')
, но он возвращает ноль.
Когда я использую $request->get('file')
, я получаю следующий ответ.
Файл ": {" имя ":" / Users / имя / файла / путь / государственные / СМИ / aaaah.wav», "мим": нулевой, "postname": нулевая}
Ниже я использую $headers[] = "Content-Type: application/json";
для преобразования получателя из массива в строку. Может ли кто-нибудь помочь мне понять, почему файл, опубликованный cURL, не получен в моем методе Laravel, когда я использую $request->hasFile('file')
и $request->file('file')
?
AppController
public function postCurlData()
{
$endPoint = 'http://127.0.0.1:9000/api';
$apiKey = '****';
$url = $endPoint . '?key=' . $apiKey;
$dir = '/Users/name/File/path/app/public/media/test.wav'; // full directory of the file
$curlFile = curl_file_create($dir);
$data = [
'recipient' => ['44909090', '44909090'],
'content' => 'i love to code',
'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);
curl_close($ch);
}
Моя конечная точка, где я получаю данные:
APIController
public function receiveCurlData()
{
$apiKey = $request->get('key');
if (($apiKey)) {
return response()->json([
'status' => 'success',
'content' => $request->get('content'),
'recipient' => $request->get('recipient'),
'file' => $request->hasFile('file')
]);
}
}
Ответ
{"status":"success","content":"I love to code","recipient":
["44909090","44909090"],"file":false}