#laravel
#laravel
Вопрос:
Контроллер Laravel project 1, как переслать файл в API-2
Input::file('songFile')->move("/tmp", $newname);
я использовал эту функцию и сохранил расположение tmp, тогда как использовать этот файл расположения tmp и переслать?
Комментарии:
1. вызовите этот api с помощью guzzle
2. да, используйте GuzzleHttp Client; @bhucho
3. Вы просили идею, я дал идею, я предполагаю, что вы не просили решения
4. Я использую guzzle. Но я спросил, как перенести файл из одного api в другой api. Это мой вопрос? @bhucho
5. Когда я нажал на первый api, файл находился в хранилище «tmp», тогда как опубликовать второй api, который содержит этот файл? @bhucho
Ответ №1:
Чтобы опубликовать файл в конечной точке API, вы можете следовать следующему коду.
try{
$path = 'var/www/html/myproject/public/file.txt';//your file path
if (!empty($path) amp;amp; file_exists($path)) {
$guzzleResponse = $client->post($api_url, [
'multipart' => [
[
'name' => 'file',// it is the name as specfied in the payload of api_url
'contents' => fopen($path, 'r')// or you can use file_get_contents()
]
],
'headers' => $headers
]);
}
if ($guzzleResponse->getStatusCode() == 200) {
$response = json_decode($guzzleResponse->getBody());// whatever you want to do with response
}
}catch(RequestException $e){
return $e; //You can also handle specific status codes here using eg $e->getResponse()->getStatusCode() == '400'
}
Также заголовки $ могут быть такими
[
'Accept' => 'application/json',
'Authorization' => 'Bearer '. $userToken,
]
Смотрите больше информации в Guzzle
Комментарии:
1. Спасибо за ваш ответ. Он работает нормально. Я использовал файл «test.mp3». Но, наконец, полученный формат файла неверен. Похоже, что «phpTVaLQf». Размер файла правильный. @bhucho
2. Есть ли у вас какое-либо решение.
3. вы передаете только свой mp3-файл или есть и другое содержимое
4. что вы изменили? Я собирался предложить about sink (если бы вы передавали только свой mp3-файл) docs.guzzlephp.org/en/latest/request-options.html#sink