Laravel: Как мне перенести мои изображения на s3 в процессе производства и в процессе разработки, чтобы он оставался локально? - PullRequest
0 голосов
/ 20 октября 2019

Я прочитал эту ветку , однако я все еще не совсем уверен, как с этим справиться.

Конечно, я мог бы установить FILESYSTEM_DRIVER на s3, но этона самом деле не будет работать.

Позвольте мне объяснить:

Если мы загрузим простой файл аватара:

request()
        ->file('avatar')
        ->store('avatars', 'public')

Файл сохраняется в БД, например: avatars/R6ZGC9U0c22mKMcAADZbc8kJeU8soTvOuNFvnYgv.jpeg

Этот файл хранится в локальном файле общего хранилища. Однако, если мы теперь хотим изменить файловую систему по умолчанию на S3, очевидно, что ничего не изменится, потому что я заявил о том, чтобы сохранить ее в открытом доступе.

Теперь, это будет еще сложнее, когда мы получим изображение с помощью метода asset. Обычно мне просто нужно написать:

 public function getAvatarAttribute($avatar)
{
    return asset('storage/' . $avatar));
}

, чтобы получить файл аватара (из-за символической ссылки в общей папке).

Что теперь? Я, очевидно, не сохраняю папку для хранения.

Как бы вы справились с этим?

1 Ответ

1 голос
/ 20 октября 2019

Честно говоря, я считаю, что это является недостатком в некоторых слоях абстракции Ларавела;некоторые драйверы требуют, чтобы вы делали что-то совершенно по-другому, и я согласен, что это не имеет смысла.

Я только что создал корзину s3 для локального тестирования / разработки. Это дает преимущество, которое вы разрабатываете / тестируете, так как оно будет работать и на производстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...