Laravel: работа с файлами – просмотр и удаление файлов

Ромчик
0

laravelДоброго времени суток. В прошлой статье мы с вами рассмотрели как загружать файлы в Laravel. Но просто загружать файлы не интересно. Хотелось бы научиться просматривать файлы и удалять их методами Laravel. В данной статье мы и разберемся как это делать.

Первое, что нам необходимо сделать – это настроить место хранения наших файлов (storage)

Настройка файловой системы

Все настройки для файловых систем находятся в config/filesystems.php. Откроем этот файл, нас интересует элемент массива «disks». Добавим в него следующий код:

'disks' => [
…
    'images' => [
        'driver' => 'local',
        'root' => storage_path('images'),
    ],
…

Как вы помните, картинки у нас хранятся в storage/images.

Контроллер для работы с файлами: просмотр и удаление

Контроллер, который отвечает за роботу с файлами называется UploadController (из статьи «Загрузка файлов в Laravel»). Данный контроллер содержит два метода:

  • Метод отображения формы для загрузки файлов – getForm
  • Метод, который отвечает непосредственно за загрузку файлов – upload

Нам необходимо добавить еще два метода:

  • getFiles – метод, который будет получать все файлы, которые хранятся в нашем storage
  • delete – метод, который удаляет файл

Открываем наш контроллер app/Http/Controllers/UploadController.php и добавляем эти методы:

…
public function getFiles()
{
    $f = Storage::disk('images');
    $files = $f->allFiles();
    
    return view('files',['files' => $files]);
}

public function delete(Request $request)
{
    $f = Storage::disk('images');
    $f->delete($request->filename);

    return redirect('upload/all');
}
…

Теперь нам нужно создать вьюшку files.blade.php

Создание view для отображения файлов

В папке resources/views создадим файл files.blade.php и добавим в него следующий код:

<!DOCTYPE html>
<html>
<head>
    <title>Upload File</title>
</head>
<body>
    <table>
        @if($files)
            <thead>
                <th>Название</th>
                <th></th>
            </thead>
            <tbody>
                @foreach ($files as $file)
                    <tr>
                        <td>{{ $file }}</td>
                        <td><a href="{{ route('upload_delete',['filename' => $file]) }}">Удалить</a></td>
                    </tr>
                @endforeach
            </tbody>
        @else
            <tr>
                <td colspan="2">Файлов нет</td>
            </tr>
        @endif
    </table>
</body>
</html>

Осталось только добавить роуты.

Создание роутов

Открываем файл routes/web.php и добавляем в него следующий код:

…
Route::get('upload/all',['as' => 'upload_all', 'uses' => 'UploadController@getFiles']);

Route::get('upload/delete/{filename}',['as' => 'upload_delete','uses' => 'UploadController@delete']);
…

Отлично. Проверяем.

Переходим <имя_сайта>/upload/all (в моем случае http://test.loc/upload/all).

Просмотр файлов

И проверим папку где хранятся наши картинки.

Проверка даиректории с файлами

Теперь давайте удалим этот файл, заходим <имя_сайта>/upload/all (в моем случае http://test.loc/upload/all) и жмем по ссылке «Удалить» напротив названия файла.

Удаление файла

Как видим, файл удален и у нас больше нет файлов.

Нет файлов

Давайте проверим папку. Как видите папка пуста

Проверка папки

Отлично. Мы с вами разобрали как с помощью Laravel просмотреть файлы в папке и как их удалить.

Не забываем подписаться, чтобы не пропустить выхода новых статей: VK, Facebook, Twitter

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2020 По всем вопросам обращайтесь через форму обратной связиПолитика конфиденциальности

Яндекс.Метрика