tatter/文件

文件上传和管理,适用于CodeIgniter 4

v3.0.0-beta.1 2022-02-28 14:49 UTC

README

文件上传和管理,适用于CodeIgniter 4

Coverage Status

快速入门

  1. 使用Composer安装: > composer require tatter/files
  2. 迁移数据库: > php spark migrate -all
  3. 数据库种子: > php spark db:seed "Tatter\Files\Database\Seeds\FileSeeder"
  4. 开始管理文件: https://example.com/files

image image image

功能

文件模块是一组自包含的路由和函数集,可以为任何项目添加上传和CRUD控制。它使用DropzoneJS进行拖放上传,并支持生成文件缩略图和将文件导出到各种目的地的多种扩展。

安装

通过Composer轻松安装以利用CodeIgniter 4的自动加载功能,并始终保持最新状态

> composer require tatter/files

或者,通过下载源文件并将目录添加到app/Config/Autoload.php中来手动安装。

文件下载并包含在自动加载中后,运行任何库迁移以确保数据库正确设置

> php spark migrate --all

运行种子来安装必要的数据库设置

php spark db:seed "Tatter\Files\Database\Seeds\FileSeeder"

最后,运行框架的发布命令以将资源复制到您的公共目录

php spark publish

注意:您可能需要调整您的Publisher.php配置文件以支持.mjs文件。

配置(可选)

可以通过扩展其配置文件来更改库的默认行为。将examples/Files.php复制到app/Config/,并按照注释中的说明进行操作。如果app/Config中没有找到配置文件,库将使用其自己的。

注意:如果您的项目是跟踪仓库的一部分,您可能希望将文件存储添加到您的.gitignore中

writable/files/*
!writable/files/index.html

用法

默认路由

  • files/index - 如果用户允许mayList(),则显示所有文件,否则尝试回退到当前登录用户
  • files/user/{userId} - 显示单个用户的所有文件;如果没有提供用户ID,则默认为当前登录用户
  • files/thumbnail/{fileId} - 显示文件的缩略图

CRUD

  • files/new - 基本的Dropzone表单
  • files/upload - 接受来自Dropzone的AJAX上传请求
  • files/delete/{fileId} - 删除文件
  • files/rename/{fileId} - 接受POST数据以重命名文件

支持的格式

  • ?format=cards - 默认视图,具有响应式布局的缩略图
  • ?format=list - 以表格格式显示文件的效率列表
  • ?format=select - 可用于创建可选文件,例如作为表单的一部分

访问控制

此库使用Tatter\Permits来控制对文件的访问,包括一般性(列出、创建)以及针对特定用户或组的访问。可以将超级许可mayAdmin()添加到用户或组以实现全局文件访问。

默认情况下,files/路由在模块安装后即可使用。在大多数情况下,您将希望使用路由过滤器来限制某些或所有路由。

扩展

Controllers/Files.php 是模块的核心,使用级联选项来选择在何时显示哪些文件。这个控制器有一个 setData() 方法,允许你拦截此过程,在任何时候提供自己的设置。只需扩展控制器到你的自定义版本,然后提供你想要的所有更改,接着是 display() 方法。例如:

<?php namespace App\Controller;

class WidgetFiles
{
	public function index($widgetId)
	{
		$this->setData([
			'format' => 'cards',
			'files'  => model(WidgetModel::class)->getFiles($widgetId),
			'layout' => 'manage',
		]);

		return $this->display();
	}
}

这些是 setData() 的默认选项,但你也可以在你的视图中提供任何其他需要的项。

  • source - 发起调用的控制器方法的名称
  • layout - 要使用的视图布局(见 Config/Files.php
  • files - 要显示的文件数组
  • selected - 预选文件(用于 select 格式)
  • userId - 用于过滤文件的用户的ID
  • username - 默认布局标题中显示的用户的显示名
  • ajax - 是否将请求作为AJAX调用处理(跳过布局包装)
  • search - 用于过滤文件的搜索词
  • sort - 文件排序字段
  • order - 文件排序顺序
  • format - 文件的显示格式(卡片、列表、选择或你自己的格式!)
  • perPage - 每页显示的项目数
  • page - 页码(留空 null 以使用默认分页器处理)
  • pager - 处理分页的 Pager 实例
  • access - 文件是否可以被修改,"管理" 或 "显示"
  • exports - 文件可能被发送到的目的地(见 Tatter\Exports
  • bulks - 一组文件的批量目的地(见 Tatter\Exports