Laravel 文件上传包。

3.0.0 2022-04-23 15:59 UTC

This package is auto-updated.

Last update: 2024-09-23 21:29:01 UTC


README

Latest Version on Packagist Build Status StyleCI Quality Score Total Downloads License

安装

您可以通过 composer 安装此包。

composer require hamidrezaniazi/upolo

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

php artisan vendor:publish --provider="Hamidrezaniazi\Upolo\UpoloServiceProvider" --tag="migrations"

发布迁移后,您可以运行迁移来创建文件表:

php artisan migrate

用法

您可以使用门面持久化上传的文件。

$file = Upolo::upload($uploadedFile)

如果您想在持久化文件时添加选项到文件模型中,请使用这个:

$file = Upolo::upload($uploadedFile, $user, $owner, $disk, $flag)

所有者与文件相关联,并应实现 HasFileInterface 并使用类似这样的 HasFileTrait

<?php

class Owner extends Model implements HasFileInterface
{
    use HasFileTrait;

可用的筛选作用域包括

//Filter by owner
Upolo::whereOwnerIs($owner)->get();

//Filter by owner id
Upolo::whereOwnerIdIs($ownerId)->get();

//Filter by owner type
Upolo::whereOwnerTypeIs($ownerType)->get();

//Filter by creator
Upolo::whereCreatorIs($creator)->get();

//Filter by creator id
Upolo::whereCreatorIdIs($creatorId)->get();

//Filter by flag
Upolo::whereFlagIs($flag)->get();

//Filter by type
Upolo::whereTypeIs($type)->get();

类型将自动根据 MIME 类型填充,包括图像、视频、应用程序等。

您还可以通过控制器中的请求过滤文件。以下键可用于过滤,您可以通过查询字符串发送它们:

  • owner_id
  • owner_type
  • creator_id
  • type
  • flag

对于请求过滤,您控制器的索引函数应如下所示:

<?php

class FileController extends Controller
{
    /**
     * @param FileFilters $filters
     * @return AnonymousResourceCollection
     */
    public function index(FileFilters $filters): AnonymousResourceCollection
    {
        return FileResource::collection(File::filter($filters)->paginate());
    }

使用 delete 方法可以从存储和数据库中删除文件。

$file->delete();

测试

composer test

变更日志

请参阅变更日志获取更多最近更改的信息。

贡献

请参阅贡献指南以获取详细信息。

安全性

如果您发现任何安全问题,请通过hamidrezaniazi@yahoo.com 发送电子邮件,而不是使用问题跟踪器。

鸣谢

许可证

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