Laravel local php file

Laravel. Файловое хранилище

Laravel предоставляет мощную абстракцию для работы с файловой системой благодаря php-пакету Flysystem от Франка де Жонге. Настройки файловой системы находятся в файле config/filesystems.php . В нём можно настроить так называемые «диски». Каждый диск представляет собой определенный драйвер и место хранения. В конфигурационном файле имеются примеры для каждого поддерживаемого драйвера.

return [ /* . */ 'default' => env('FILESYSTEM_DRIVER', 'local'), /* . */ 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], ], /* . */ 'links' => [ public_path('storage') => storage_path('app/public'), ], /* . */ ];

Функция storage_path() возвращает полный путь к директории storage . Также можно использовать функцию storage_path() для получения полного пути к указанному файлу относительно директории хранилища:

// вернет полный путь /var/www/server.com/storage $path = storage_path(); // вернет /var/www/server.com/storage/app/file.txt $path = storage_path('app/file.txt');

Функция public_path() возвращает полный путь к директории public , которая является корнем веб-сервера, т.е. доступна из веб. Также можно использовать функцию public_path() для получения полного пути к указанному файлу или директории:

// вернет полный путь /var/www/server.com/public $path = public_path(); // вернет /var/www/server.com/public/index.php $path = public_path('index.php');

Сразу после установки Laravel доступны диски local и public , использующие драйвер local . Для диска local место хранения — директория storage/app , для диска public место хранения — директория storage/app/public . Диск local является диском по умолчанию.

Чтобы сделать файлы диска public доступными через веб, надо создать символьную ссылку из public/storage на storage/app/public . Директория public проекта Laravel — является корневой директорией сервера, поэтому файл storage/app/public/image.jpg будет доступен через веб как http://server.com/storage/image.jpg .

Какие символьные ссылки создавать — задается в файле конфигурации, см. выше. Когда файл сохранён на диске и создана символьная ссылка, можно создать URL к файлу с помощью хелпера asset() или метода url() фасада Storage .

src=" asset('storage/images/image.jpg') >>" alt="" />
src=" Storage::disk('public')->('images/image.jpg') >>" alt="" />

Методы фасада Storage

При использовании драйвера local все файловые операции выполняются относительно директории root , определенной в конфигурационном файле. Для диска local директория root — это storage/app , для диска public директория root — это storage/app/public .

// файл будет сохранен в storage/app/data/file.txt Storage::disk('local')->put('data/file.txt', 'Some file content');

При вызове метода фасада Storage без предварительного вызова метода disk() — вызов будет автоматически передан диску по умолчанию.

// файл будет сохранен в storage/app/images/image.jpg Storage::put('images/image.jpg', $contents); // содержимое файла
// файл будет сохранен в storage/app/images/image.jpg Storage::put('images/image.jpg', $resource); // php-ресурс файла

Метод putFile() помещает содержимое указанного файла (в виде экземпляра класса Illuminate\Http\File или Illuminate\Http\UploadedFile ) в указанный каталог, но с возложением контроля над всей потоковой обработкой и формированием уникального имени файла на Laravel. Метод возвращает путь к файлу, включая сформированное имя.

// автоматическое формирование уникального имени, файл будет сохранен // как storage/app/images/L6ceLZQtmzvtR5lYEMqViu8BB8Fta8sWiD0xzXFw.jpeg Storage::disk('local')->putFile('images', new File('/path/to/photo'));
// вручную указываем имя для, файл будет сохранен как storage/app/images/photo.jpg Storage::disk('local')->putFileAs('images', new File('/path/to/photo'), 'photo.jpg');

Методом get() можно получать содержимое файла. Он возвращает сырую строку содержимого файла.

$contents = Storage::get('images/image.jpg');

Методом exists() можно определить существование файла на диске:

$exists = Storage::exists('image.jpg');

Метод url() позволяет получить URL файла. При использовании диска local будет возвращён URL вида /storage/images/image.jpg . При использовании диска public будет возвращён полный URL, домен сайта будет получен из .env -файла в корне проекта, это настройка APP_URL .

// возвращает URL /storage/images/image.jpg $url = Storage::disk('local')->url('images/image.jpg'); // возвращает URL http://server.com/images/image.jpg $url = Storage::disk('public')->url('images/image.jpg');

Метод size() позволяет получить размер файла в байтах:

$size = Storage::size('images/image.jpg');

Метод copy() копирует файл, метод move() перемещает файл:

Storage::copy('images/old-image.jpg', 'images/new-image.jpg'); Storage::move('images/old-image.jpg', 'images/new-image.jpg');

Метод prepend() добавляет содержимое в начало файла, метод append() добавляет содержимое в конец файла:

Storage::prepend('logs/some.log', 'Some log text'); Storage::append('logs/some.log', 'Some log text');

Метод delete() удаляет указанный файл:

Storage::delete('images/image.jpg');

Метод files() возвращает массив имен файлов в указанной директории. А метод allFiles() — массив имен файлов в указанной директории и во всех поддиректориях.

Метод directories() возвращает массив имен директорий в указанной директории. А метод allDirectories() — массив имен директорий в указанной директории и во всех поддиректориях.

Метод makeDirectory() создает новую директорию, а метод deleteDirectory() удаляет указанную директорию.

Загрузка файлов

В Laravel очень просто сохранять загружаемые файлы методом store() на экземпляре загружаемого файла:

 namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class UserAvatarController extends Controller  /** * Обновление аватара пользователя. * * @param Request $request * @return Response */ public function update(Request $request)  $path = $request->file('avatar')->store('avatars'); return $path; > >

Мы указываем только директорию avatars , а имя файла будет сформировано автоматически. Метод вернёт путь к файлу, поэтому можно сохранить в БД весь путь, включая сгенерированное имя. Файл будет сохранен на диск по умолчанию, но можно указать диск вторым аргументом метода store() .

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

Также можно использовать метод putFile() фасада Storage для выполнения аналогичного действия:

// будет использован диск по умолчанию $path = Storage::putFile('avatars', $request->file('avatar'));
// явное указание диска для сохранения $path = Storage::disk('public')->putFile('avatars', $request->file('avatar'));

Чтобы задать свое имя файла и (опционально) диск для сохранения, можно использовать метод storeAs() :

// будет использован диск по умолчанию $path = $request->file('avatar')->storeAs( 'avatars', // директория, куда сохранять $request->user()->id // имя файла );
// явное указание диска для сохранения $path = $request->file('avatar')->storeAs( 'avatars', // директория, куда сохранять $request->user()->id, // имя файла 'public' // диск, куда сохранять );

Также можно использовать метод putFileAs() фасада Storage для выполнения аналогичного действия:

// будет использован диск по умолчанию $path = Storage::putFileAs( 'avatars', // директория, куда сохранять $request->file('avatar'), $request->user()->id // имя файла );
// явное указание диска для сохранения $path = Storage::disk('public')->putFileAs( 'avatars', // директория, куда сохранять $request->file('avatar'), $request->user()->id // имя файла );

Чтобы получить оригинальное имя загруженного файла:

$name = $request->file('avatar')->getClientOriginalName();

Чтобы получить оригинальное расширение загруженного файла:

$extension = $request->file('avatar')->extension();

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Читайте также:  Php form output to html
Оцените статью