guimcaballero/laravel-folders

动态上传多个文件文件夹

dev-master 2020-05-05 10:15 UTC

This package is auto-updated.

Last update: 2024-09-05 20:13:28 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

这是一个非常简单的包,实现了文件夹功能,您可以将任意数量的文件保存到一个模型中,同时只需要一个列。

文件夹的行为就像您操作系统上的普通文件夹一样,您可以添加、删除和列出文件。添加文件不会删除现有文件。

安装

您可以通过composer安装此包

composer require guimcaballero/laravel-folders

然后运行迁移

php artisan migrate

配置

您可以使用以下命令发布迁移

php artisan vendor:publish --provider="Guimcaballero\LaravelFolders\LaravelFoldersServiceProvider"

示例

这是一个简单的用例,我们希望能够在用户中上传一系列重要文件

在 App\User

<?php

namespace App;

...
use Guimcaballero\LaravelFolders;

class User extends Authenticatable
{
    ...

    public function importantDocuments()
    {
        return $this->morphOne(Folder::class, 'folderable');
    }
}

然后在 web.php

    Route::post('user/uploadImportantFiles', function(Request $request) {
        $folder = auth()->user()->importantDocuments;
        $folder->uploadFiles($request->file('files'));

        dd($folder->getListOfFiles());
    });

用法

将文件夹添加到模型

要将文件夹添加到模型,请将以下内容添加到模型类中

    public function importantFiles()
    {
        return $this->morphOne(Folder::class, 'folderable');
    }

创建文件夹

要创建文件夹,请运行

    $folder = Folder::createNewRandomFolder();
    $user->importantFiles()->save($folder);

列出文件夹中的所有文件

    $folder->getListOfFiles();

这将返回一个包含文件夹内文件的数组。

上传多个文件

您可以使用以下命令一次性上传多个文件

    $folder->uploadFiles($request->file('files'));

上传单个文件

您可以使用以下命令上传单个文件

    $folder->uploadSingleFile($request->file('file'));

删除文件

要删除多个文件,请传递包含文件名的数组

    $folder->removeFiles(['importantFile1.pdf', 'importantFile2.pdf']);

删除单个文件

要删除单个文件,请传递文件名

    $folder->removeSingleFile('importantFile1.pdf');

## 多个文件夹

您可以在一个类中有多个文件夹,例如

    public function importantDocuments()
    {
        return $this->morphOne(Folder::class, 'folderable')->where('folderable_group', 'important');
    }

    public function lessImportantDocuments()
    {
        return $this->morphOne(Folder::class, 'folderable')->where('folderable_group', 'less_important');
    }

然后您在创建文件夹时必须传递相应的组

    $folder = Folder::createNewRandomFolder('important');
    $user->importantFiles()->save($folder);

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

请随时为此项目做出贡献!

有关详细信息,请参阅 CONTRIBUTING

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件