Как отправить изображение с контроллера Laravel в API Rest - PullRequest
1 голос
/ 11 февраля 2020

Мне нужно взять изображение из хранилища в Laravel и отправить его из контроллера на внешний API REST.

Я использую guzzlehttp multipart, но API не получил файл, возвращает file = null

1 Ответ

0 голосов
/ 11 февраля 2020

Вот как я это сделал несколько дней go (принимая файл из запроса):

Для одного файла:

public function storeProductImage($id, Request $request){
    $image = $request->file('image');
    $body = ["headers" => [
        "Accept" => "multipart/form-data"],
        "multipart" => [
        "name" => "image",
        "contents" => file_get_contents($image),
        "filename" => $image->getClientOriginalName()
        ]
    ];
    return \GuzzleHttp\Client::request('POST', 'product/'.$id.'/images', $body);
}


Для нескольких файлов:

public function storeProductImage($id, Request $request){
    $body = ["headers" => ["Accept" => "multipart/form-data"], "multipart" => []];
    $images = $request->file('image');
    if (is_array($images)) {
        foreach ($images as $image) {
            array_push($body["multipart"], ["name" => "image[]", "contents" => file_get_contents($image), "filename" => $image->getClientOriginalName()]);
        }
    }
    return \GuzzleHttp\Client::request('POST', 'product/'.$id.'/images', $body);
}
...