Laravel получает изображение с S3 с его URL-адресом

Мне нужно получить изображение из S3 и опубликовать его в Twitter с помощью Laravel. Изображение загружается с помощью Vapor (Vue js) и URL-адрес пути, хранящийся в базе данных. Пример URL (https://rippleflare-s3-dev.s3.amazonaws.com/7f87e5a4-f157-483e-8dcb-59a735194747). Изображение доступно через браузер, но когда я пытаюсь получить такое изображение

Storage::disk('s3')->get($post->media_url)

Если средний URL-адрес - https://rippleflare-s3-dev.s3.amazonaws.com/7f87e5a4-f157-483e-8dcb-59a735194747 Я получаю сообщение об ошибке

Illuminate \ Contracts \ Filesystem \ FileNotFoundException https://rippleflare-s3-dev.s3.amazonaws.com/7f87e5a4-f157-483e-8dcb-59a735194747

Мой вопрос, как мне получить файл из S3 в Laravel, используя URL-адрес файла (путь)


person Benjamin Mwendwa Munyoki    schedule 31.10.2019    source источник
comment
Вы не запрашиваете у S3 URL-адрес, вы запрашиваете объект в настроенной корзине. 7f87e5a4-f157-483e-8dcb-59a735194747 в этом случае.   -  person deefour    schedule 31.10.2019
comment
Спасибо @deefour Теперь работает нормально   -  person Benjamin Mwendwa Munyoki    schedule 31.10.2019


Ответы (1)


вы также можете определить в модели, чтобы получить путь к изображению следующим образом:

 public function getMediaUrlAttribute()
    {
        return Storage::disk('s3')->url($this->media_url);
    }

поэтому он предоставит URL-адрес вашего медиа

person Vishal Nakum    schedule 01.11.2019