Я давно хотел чаще писать о новостях разработки, и сейчас отличное время начать! На этой неделе я добавил в Spark загрузку фото профиля и управление им. Добавление этой функции заставило меня немного глубже погрузиться в интеграцию Laravel с Flysystem и в классы для загрузки, поскольку Forge и Envoyer не поддерживают загрузку файлов. Один из упрощённых мной процессов - получение URL файла, сохранённого в Flysystem в открытом виде. Для адаптера AWS это довольно простая задача, поскольку в AWS SDK есть метод для получения URL. Но для локального адаптера у нас нет никаких договорённостей о том, где хранить загруженные файлы пользователей. Более того, хранение загрузок в общедоступной папке не очень хорошо сказывается на решениях, обновляющихся на лету, таких как Envoyer. При использовании таких систем развёртывания, как Envoyer, при каждом развёртывании устанавливается полностью новая копия репозитория, а папка хранилища прикрепляется к постоянному хранилищу символьной ссылкой. Если вы храните загрузки пользователей в общедоступной папке, то все они пропадут при последующих развёртываниях. Решение в том, чтобы хранить загрузки в папке постоянного хранилища и создавать символьную ссылку из общедоступной папки на папку хранилища в процессе развёртывания. До вчерашнего дня (!!(tl_note) 10.02.2016 - //прим. пер.//!!) не было определённого места для хранения загрузок пользователей, кроме "где угодно в папке хранилища". После просмотра нескольких библиотек из других языков стала очевидной необходимость определить стандартное место в папке хранилища для файлов, которые будут общедоступными. Поэтому я создал папку %%(t)storage/app/public%% в репозитории Laravel, которая появится во всех новых установка Laravel 5.2 и выше. Наличие в хранилище стандартного места для общедоступных файлов позволяет разработчикам пакетов и сервисов позаботиться о вашем удобстве. Например, я планирую вскоре добавить в Envoyer автоматический "хук" для создания символьной ссылки из %%(t)public/storage%% в %%(t)storage/app/public%%, не требуя от пользователя ручной настройки. Теперь пользовательские загрузки будут общими для разных развёртываний, и не надо будет напоминать о необходимости настройки "хука" для создания символьной ссылки при развёртывании. Также я изменил файл настроек %%(t)filesystems.php%%, добавил использование общедоступного диска, который хранит файлы относительно пути %%(t)storage/app/public%%, поэтому теперь вы можете работать с файлами при помощи простого и выразительного синтаксиса: %% Storage::disk('public')->put($file, $contents); %% Надеюсь, это сделает разработку на Laravel немного проще!