ost/laravel-file-manager

此包用于上传、更新和删除单个或多个文件以及更多操作。

v0.1.0 2023-03-16 14:34 UTC

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)
     });