ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode

POST image из Laravel?

Сначала приходит запрос на API, к нему прикреплено изображение.
828c4009850e4fffb9f0023ee3f47327.png

Далее в контроллере я должен отправить это изображение методом POST на другое API.

В контроллере я получаю файл, и с помощью SDK от второго API я отправляю его. В документации сказано что нужно изображение отправить методом POST.

Я использую
$image = Input::file('img')
НО получаю не изображение, а, видимо, путь. Вот что в переменной image: /tmp/phpxtlLt4

Функция из SDK, которой я передаю изображение (в данном примере image):
$params = ["img" => '@'.$image]
$params = array_merge($this->auth_params, $params);
        $url = $this->api_server_url . "$method";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $data = curl_exec($ch);
        curl_close($ch);

        $result = null;
        if (!empty($data))
        {
            $result = json_decode($data);
        }

        return $result;


Что я делаю не так?
Если делаю запрос напрямую из Postman - все в порядке.
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
Denormalization
@Denormalization
В данном случае $image - это инстанс UploadedFile, который наследуется от SplFileInfo, у которого в свою очередь есть метод __toString, который и возвращает путь к загруженному файлу.

PS (добавленно):
Можно не читать файл, а просто заменить:
$params = ["img" => '@'.$image->getPathName()];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы