Подтвердить что ты не робот

Файл Laravel vs Хранение фасада

Существуют ли различия между File и Storage фасадами в laravel 5.2?
кажется, что они оба используют один и тот же контракт. В документации laravel нет документации для File. если они разные, как могут взаимодействовать друг с другом?

4b9b3361

Ответ 1

Файл - довольно простая оболочка для функций PHP, таких как file_exists() и т.д. Хранение - это "мощная абстракция файловой системы благодаря замечательному пакету Flysystem PHP от Frank de Jonge". Это можно использовать для локальных файлов (т.е. Storage::disk('local')->exists('path')).

До Laravel 5 у Laravel не было интеграции Flysystem. В то время фасад файла был "способ" взаимодействовать (локальные файлы). Я бы предположил, что документация для Файла удалена, чтобы пользователи вместо этого использовали хранилище. Файловая система действительно работает.

Ответ 2

Файловый фасад просто содержит некоторые примитивные методы, которые работают только с абсолютным путем или относительно вашего скрипта:

  • \File::makeDirectory('/home/www/myProject/storage/app/uploads/14214');
  • \File::copy('/home/www/myProject/storage/app/uploads/14214/test.json', '/home/www/myProject/storage/app/uploads/99999/test.json');

Storage Facade содержит набор сложных методов и является оберткой для других сторонних инструментов.

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

  • Storage::makeDirectory('uploads/14214');
  • Storage::copy('uploads/14214/test.json', 'uploads/99999/test.json');

Вы можете изменить папку по умолчанию /storage/app в config/filesystems.php или создать другие диски, которые вы можете вызвать с помощью Storage::disk('specialxyz')->copy(...).

Также вы можете сохранить raw file contents в файл следующим образом:

  • Storage::put('file.jpg', $contents);

И мой любимый, это очень легко загружать пользовательские файлы с помощью

$path = Storage::putFile('avatars', $request->file('avatar')); 

или же

 $path = $request->file('avatar')->store('avatars');

По умолчанию метод store генерирует уникальный идентификатор в качестве имени файла. Расширение файла будет определено путем изучения типа файла MIME. Путь к файлу будет возвращен методом store, чтобы вы могли сохранить путь, включая сгенерированное имя файла, в вашей базе данных.