Я ищу решение для прямой отправки ответа на мой запрос cURL. У нас есть 2 API: 1 publi c (Laravel 5.8) и 1 private (Java, только локальный доступ). Я делаю некоторую проверку, безопасность и т. Д. c. в публичном c API. Поэтому, когда я получил запрос, после проверки я отправляю запрос в частный API. Частный API создает файл из некоторых файлов и возвращает файл, который соответствует отправленным параметрам. Мне нужно переслать это аудио / видео файлы из частного API. Но на данный момент я храню файл на сервере PHP, прежде чем отправить его в качестве ответа. Я хочу пропустить этот шаг и переслать ответ от моего cURL напрямую. Является ли это возможным? И если да, то как я мог это сделать?
Вот мой код, заранее спасибо.
$ch = curl_init();
// build URL
$url = $this->url.'stream-chunk?stream='.$stream->id_audio_stream_info.'&from='.$from;
$url .= !is_null($to) ? '&to='.$to : '';
$url .= !is_null($bitRate) ? '&bit-rate='.$bitRate : '';
$url .= !is_null($quality) ? '&quality='.$quality : '';
$url .= !is_null($format) ? '&format='.$format : '';
$url .= !is_null($mode) ? '&mode='.$mode : '';
$url .= !is_null($sampleRate) ? '&sample-rate='.$sampleRate : '';
curl_setopt($ch,CURLOPT_URL,$url);
$headers = [
'Accept: */*',
'Content-Type: application/json'
];
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
if ($result === FALSE) {
$e = curl_error($ch);
Log::error($url);
Log::error($e);
$error_code = curl_getinfo($ch , CURLINFO_HTTP_CODE);
$error_message = $e;
$response = [
'msg'=>$error_message
];
$error_code = $error_code == 0 ? 400 : $error_code;
curl_close($ch);
return response()->json($response,$error_code);
}
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE );
$info = curl_getinfo($ch);
curl_close($ch);
if ($code === 204) {
return response()->json(['msg'=>'No Content'],$code);
}
$mime_type = $info['content_type'];
$file_size = $info['size_download'];
$response = response($result,200);
$response->header('Accept','*/*');
$response->header('Content-Type',$mime_type);
$response->header('Content-Length',$file_size);
return $response;