@olen.shanahan
Для создания файлового менеджера в Laravel вы можете использовать встроенные инструменты Laravel и сторонние пакеты.
Вот шаги, которые вам следует выполнить:
- Установите Laravel, если у вас его еще нет, используя Composer:
1
|
composer create-project --prefer-dist laravel/laravel файловый-менеджер
|
- Создайте маршруты в файле 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');
|
- Создайте контроллер FileManagerController с помощью команды Artisan:
1
|
php artisan make:controller FileManagerController
|
- В контроллере 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)
{
// Логика для отображения содержимого папки и файлов
}
}
|
- В представлении 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>
|
- Завершите методы 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);
}
}
}
|
- Установите необходимые драйверы хранилища и конфигурацию в файле config/filesystems.php. Например, для использования локального дискового хранилища:
1
2
3
4
5
6
7
|
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
// другие драйверы хранилища
],
|
Теперь у вас должен быть основной функционал файлового менеджера в Laravel. Вы можете расширить его, добавив функции, такие как переименование файлов и папок, перемещение файлов, пагинацию, поиск и т. д.