Может войдёшь?
Черновики Написать статью Профиль

Spark и хранилище

перевод

Я давно хотел чаще писать о новостях разработки, и сейчас отличное время начать!

На этой неделе я добавил в Spark загрузку фото профиля и управление им. Добавление этой функции заставило меня немного глубже погрузиться в интеграцию Laravel с Flysystem и в классы для загрузки, поскольку Forge и Envoyer не поддерживают загрузку файлов.

Один из упрощённых мной процессов — получение URL файла, сохранённого в Flysystem в открытом виде. Для адаптера AWS это довольно простая задача, поскольку в AWS SDK есть метод для получения URL.

Но для локального адаптера у нас нет никаких договорённостей о том, где хранить загруженные файлы пользователей. Более того, хранение загрузок в общедоступной папке не очень хорошо сказывается на решениях, обновляющихся на лету, таких как Envoyer.

При использовании таких систем развёртывания, как Envoyer, при каждом развёртывании устанавливается полностью новая копия репозитория, а папка хранилища прикрепляется к постоянному хранилищу символьной ссылкой. Если вы храните загрузки пользователей в общедоступной папке, то все они пропадут при последующих развёртываниях. Решение в том, чтобы хранить загрузки в папке постоянного хранилища и создавать символьную ссылку из общедоступной папки на папку хранилища в процессе развёртывания.

До вчерашнего дня (10.02.2016 — прим. пер.) не было определённого места для хранения загрузок пользователей, кроме «где угодно в папке хранилища». После просмотра нескольких библиотек из других языков стала очевидной необходимость определить стандартное место в папке хранилища для файлов, которые будут общедоступными. Поэтому я создал папку storage/app/public в репозитории Laravel, которая появится во всех новых установка Laravel 5.2 и выше.

Наличие в хранилище стандартного места для общедоступных файлов позволяет разработчикам пакетов и сервисов позаботиться о вашем удобстве. Например, я планирую вскоре добавить в Envoyer автоматический «хук» для создания символьной ссылки из public/storage в storage/app/public, не требуя от пользователя ручной настройки. Теперь пользовательские загрузки будут общими для разных развёртываний, и не надо будет напоминать о необходимости настройки «хука» для создания символьной ссылки при развёртывании.

Также я изменил файл настроек filesystems.php, добавил использование общедоступного диска, который хранит файлы относительно пути storage/app/public, поэтому теперь вы можете работать с файлами при помощи простого и выразительного синтаксиса:

PHP
Storage::disk('public')->put($file$contents);

Надеюсь, это сделает разработку на Laravel немного проще!

Как вы считаете, полезен ли этот материал? Да Нет

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.