ost / laravel-file-manager
此包用于上传、更新和删除单个或多个文件以及更多操作。
Requires
- php: ^7.3|^8.0
This package is auto-updated.
Last update: 2024-09-16 17:52:33 UTC
README
This package deals with the operations that occur on files,
such as uploading, updating, fetching, or deleting a file.
安装
composer required ost/laravel-file-manager
发布包
php artisan vendor:publish --provider="OST\LaravelFileManager\LaravelFileManagerServiceProvider"
created files config/laravel_file_manager.php database/migrations/create_files_table.php
迁移以在数据库中创建表
php artisan migrate
注意
1- The default disk is [public] 2- You can change disk from .env by change FILESYSTEM_DISK=public
用法
上传文件
您可以上传一个或多个文件
FileManager::setRequest($request) ->setUserId(1) ->setModelName(User::class) ->setFilePath('/user/1/images') ->uploadFile();
更新文件
通过URL更新文件
您可以通过传递要上传的文件和要删除的文件的URL来更新文件
FileManager::setRequest($request) ->setUserId(1) ->setModelName(User::class) ->setFilePath('/user/1/images') ->updateFileByUrl(['url1','url2']);
通过路径更新文件
您可以通过传递要上传的文件和要删除的文件的路径来更新文件
FileManager::setRequest($request) ->setUserId(1) ->setModelName(User::class) ->setFilePath('/user/1/images') ->updateFileByPath(['path1','path2']);
删除文件
通过URL删除文件
FileManager::deleteFileByUrl(['url1','url2'],user_id);
通过文件路径删除文件
您可以直接传递文件路径
FileManager::deleteFileByPath(['path1','path2'],user_id);
自定义
设置模型名称和ID
我们这样做是为了使您能够创建表之间的关系
FileManager::setRequest($request) ->setModelName() // like => Post::class,Message::class ->setModelId() // like => post_id , message_id
设置最大文件大小
FileManager::setRequest($request) ->setMaxFileSizeKB(8000)
设置磁盘
FileManager::setRequest($request) ->setDisk(disk_name)
设置允许的文件扩展名(MIME类型)
FileManager::setRequest($request) ->setAllowedExtensions('jpg,png,mp4')
设置请求文件键
默认值:file_key: 'file'
FileManager::setRequest(request: $request,file_key: 'file',file_is_required: true)
文件上传或更新是可选的
默认值:file_is_required: true 更改为 false
FileManager::setRequest(request: $request,file_key: 'file',file_is_required: false)
获取文件URL
您可以通过传递文件路径来获取文件URL和MIME类型或仅获取文件URL
FileManager::getUrl('user/1/images/YFSCBjbOCRQ7At7J7uX4cihDcZkf7j.png',true);
返回结果:{"url": "http://127.0.0.1:8000/storage/user/1/images/YFSCBjbOCRQ7At7J7uX4cihDcZkf7j.png", "type": "png"}
加密文件路径
您可以加密文件路径,但必须在文件系统中创建新磁盘,因为公开磁盘不与加密URL一起使用,以启用此功能
config/laravel_file_manager.php
'encrypted_url'=>true
创建新磁盘
config/filesystems.php
'disks' => [ 'disk_name' => [ 'driver' => 'local', 'root' => storage_path('app/disk_name'), 'url' => env('APP_URL').'/disk_name', ], ]
.env
FILESYSTEM_DISK=disk_name
当获取文件URL时,返回的URL如下
{"url": "http://127.0.0.1:8000/disk_name/eyJpdiI6IktKVlRTOENwUnJ5a3VTOG5CNzJsYVE9PSIsInZhbHVlIjoiY25wbEZlYUsxeEhNUXdhWnBSZHgwNlhwRzk1UDJXY0MyTyt4R1NqQjdDS1owRk4vTFdqQWFQU0d3U2h2Z1FBK0Y0TVZCazBRWFNpR2xwOTlpMHBwS2c9PSIsIm1hYyI6IjdjMDgwYTUzOTcxYjMyNWQ2Y2UwNTI5MDI5NmQ0ZjA5YTA0YzU2NjgxMjAxZGZmN2I2YjU5YTMzMjRiMWRkNjMiLCJ0YWciOiIifQ==", "type": "png"}
高级
- 您可以使用File Eloquent模型
\OST\LaravelFileManager\Models\File::
- 您可以通过接收请求来获取和自定义文件
config/laravel_file_manager.php
从true更改为false
'get_file_route'=>false
routes/web.php
在routes/web中添加路由以接收请求
Route::get('/storage/' . '{path}', function ($path) { return \OST\LaravelFileManager\FileManager::getFileByRoute($path,$disk,false) });