Как сделать файловый менеджер в laravel?

Пользователь

от olen.shanahan , в категории: PHP , 2 года назад

Как сделать файловый менеджер в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от montana_hand , 2 года назад

@olen.shanahan 

Пользователь

от aubree , год назад

@olen.shanahan 

Для создания файлового менеджера в Laravel вы можете использовать встроенные инструменты Laravel и сторонние пакеты.


Вот шаги, которые вам следует выполнить:

  1. Установите Laravel, если у вас его еще нет, используя Composer:
1
composer create-project --prefer-dist laravel/laravel файловый-менеджер


  1. Создайте маршруты в файле routes/web.php, чтобы определить точки входа для вашего файлового менеджера:
1
2
3
4
Route::get('/file-manager', 'FileManagerController@index')->name('file-manager.index');
Route::post('/file-manager/upload', 'FileManagerController@upload')->name('file-manager.upload');
Route::post('/file-manager/delete', 'FileManagerController@delete')->name('file-manager.delete');
Route::get('/file-manager/{path}', 'FileManagerController@show')->name('file-manager.show');


  1. Создайте контроллер FileManagerController с помощью команды Artisan:
1
php artisan make:controller FileManagerController


  1. В контроллере FileManagerController, определите методы index, upload, delete и show для управления соответствующими действиями:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use IlluminateHttpRequest;
use IlluminateSupportFacadesStorage;

class FileManagerController extends Controller
{
    public function index()
    {
        // Логика для отображения основной страницы файлового менеджера
    }

    public function upload(Request $request)
    {
        // Логика для загрузки файлов
    }

    public function delete(Request $request)
    {
        // Логика для удаления файлов
    }

    public function show($path)
    {
        // Логика для отображения содержимого папки и файлов
    }
}


  1. В представлении resources/views/file-manager/index.blade.php создайте форму для загрузки файлов и таблицу для отображения списка файлов и папок.


В форме используйте Route helper для указания URL-адреса маршрута для загрузки файлов:

1
2
3
4
5
<form action="{{ route('file-manager.upload') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <input type="file" name="file" required>
    <button type="submit">Загрузить</button>
</form>


В таблице используйте цикл foreach для отображения списка файлов и папок, полученных из базы данных или файловой системы:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<table>
    <thead>
        <tr>
            <th>Имя</th>
            <th>Размер</th>
            <th>Тип</th>
            <th>Действия</th>
        </tr>
    </thead>
    <tbody>
        @foreach ($files as $file)
            <tr>
                <td>{{ $file->name }}</td>
                <td>{{ $file->size }}</td>
                <td>{{ $file->type }}</td>
                <td>
                    <form action="{{ route('file-manager.delete') }}" method="POST">
                        @csrf
                        <input type="hidden" name="path" value="{{ $file->path }}">
                        <button type="submit">Удалить</button>
                    </form>
                </td>
            </tr>
        @endforeach
    </tbody>
</table>


  1. Завершите методы upload, delete и show в контроллере FileManagerController, используя функции Storage Laravel для загрузки, удаления и отображения файлов и папок:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use IlluminateSupportFacadesStorage;

class FileManagerController extends Controller
{
    public function upload(Request $request)
    {
        $path = $request->file('file')->store('files');
        // Логика для сохранения информации о файле в базе данных

        return redirect()->back();
    }
    
    public function delete(Request $request)
    {
        $path = $request->input('path');
        Storage::delete($path);
        // Логика для удаления информации о файле из базы данных

        return redirect()->back();
    }
    
    public function show($path)
    {
        if (Storage::exists($path)) {
            if (Storage::isDirectory($path)) {
                // Логика для отображения содержимого папки
            } else {
                // Логика для отображения файла
            }
        } else {
            abort(404);
        }
    }
}


  1. Установите необходимые драйверы хранилища и конфигурацию в файле config/filesystems.php. Например, для использования локального дискового хранилища:
1
2
3
4
5
6
7
'disks' => [
    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],
    // другие драйверы хранилища
],


Теперь у вас должен быть основной функционал файлового менеджера в Laravel. Вы можете расширить его, добавив функции, такие как переименование файлов и папок, перемещение файлов, пагинацию, поиск и т. д.