Каков наилучший подход к сохранению изображений пользователей на сервере безопасным, приватным и масштабируемым способом? - PullRequest
0 голосов
/ 29 апреля 2020

В настоящее время я разрабатываю социальную сеть, используя PHP Lumen (как Laravel, но без внешней части), MySQL и Ioni c framework.

Каков наилучший подход к сохранять изображения пользователей таким образом, чтобы их мог получить только пользователь?

Мне нужно сохранить изображение профиля пользователя, но я понимаю, что сохранение формата base64 изображения в базе данных не очень хорошая вещь, поскольку приложение весы. Итак, мой вопрос: я должен сохранить изображение как есть, но изменить имя с некоторым значением ha sh, таким же, как папка, чтобы только пользователь мог получить правильный путь к нему и обслуживать этот путь к внешнему интерфейсу?

Или, возможно ли сохранить изображение в папке, к которой имеет доступ только сервер, и просто получить правильный URL-адрес файла, используя маркер сеанса пользователя? Должен ли я зашифровать изображения? Это занимает слишком много времени и обработки?

1 Ответ

0 голосов
/ 29 апреля 2020

Прежде всего, вы не должны использовать Lumen для создания сайта социальной сети. Там, где Lumen облегчен, ему не хватает основных утилит, которые предлагает Laravel.

Теперь вернемся к вашему вопросу, вам потребуется league/flysystem в вашем проекте и использовать API хранилища. Возможно, вам придется иметь дело с конфигурациями в Lumen, чтобы заставить файловую систему работать должным образом.

Так же, как Laravel, вы должны хранить папку хранилища вне папки publi c и символической ссылки. каталог publi c приложения хранилища. В Laravel у вас есть команда php artisan storage:link для достижения результатов.

Теперь, после правильного конфигурирования хранилища, файлы publi c будут доступны непосредственно, когда каталог является символической ссылкой, и вы можете решить, на личные файлы, как они должны быть доступны. Flysystem предоставляет вам большую гибкость при чтении и записи контента с / на диск. Надеюсь, это поможет вам как-то начать.

...