tomshaw/mediable

一个全面的 Laravel Livewire 媒体管理器。


README

Mediable 是一个轻量级、易于使用的 Laravel Livewire 媒体管理器。Mediable 非常适合将内容注入博客文章、轮播图、产品预览或类似应用中。

GitHub Workflow Status issues forks stars GitHub license

要查看完整演示,请访问 Mediable Demo 仓库。

截图

Mediable

安装

您可以通过 composer 安装此包

composer require tomshaw/mediable

Mediable 包含安装和更新命令。

php artisan mediable:install
php artisan mediable:update

运行包含的数据库迁移。

这将创建一个附件表,用于存储上传信息。

php artisan migrate

将 Mediable 样式和脚本指令添加到您的布局中。

@vite(['resources/css/app.css', 'resources/js/app.js'])

@mediableStyles
@mediableScripts

请确保您的 .env 中的 APP_URL 设置正确。

APP_URL=https://mydomain.com

最后,确保上传的文件可以从网络上访问。

php artisan storage:link

使用方法

将 Mediable 组件添加到您的 blade 模板中。

布尔选项可以通过仅指定键来提供。

<livewire:mediable fullScreen />

通过分发 mediable.open 事件来启动 Mediable。

这通常是在按钮点击时执行的。

$this->dispatch('mediable.open');

使用 PHP 8 命名参数直接将附件插入表单输入中。

此示例通过将附件直接注入一个具有 iddescription 的 HTML 输入来启动模态框。

$this->dispatch('mediable.open', id: 'description');

使用 mediable.on 事件来处理选定的附件。

on(['mediable.on' => function ($files) {
  // Handle selected files...
}]);

验证

您可以在 mediable.php 配置文件中自定义允许的文件类型和最大文件大小。

'validation' => [
    'files.*' => 'required|mimes:jpeg,png,jpg,gif,mp3,mp4,m4a,ogg,wav,webm,avi,mov,wmv,txt,pdf,doc,docx,xls,xlsx,ppt,pptx,zip,rar|max:10240',
],

mimes 规则指定允许的文件类型。要添加新文件类型,只需将其 MIME 类型添加到列表中。例如,要允许 SVG 文件,您需要将其更改为

'mimes:jpeg,png,jpg,gif,mp3,mp4,m4a,ogg,wav,webm,avi,mov,wmv,txt,pdf,doc,docx,xls,xlsx,ppt,pptx,zip,rar,svg'

max 规则指定最大文件大小,以千字节为单位。要更改最大文件大小,只需更改数字。例如,要允许文件大小最多为 50MB,您需要将其更改为

'max:51200'

存储磁盘

您可以在 mediable.php 配置文件中配置用于文件上传的存储磁盘。使用 disk 选项指定磁盘名称

'disk' => env('FILESYSTEM_DRIVER', 'public'),

disk 的值是您的 Laravel 应用程序 config/filesystems.php 文件中 disks 的键。默认情况下,它使用由 FILESYSTEM_DRIVER 环境变量指定的磁盘,如果没有设置环境变量,则为 'public'。

您可以将 disk 选项更改为使用不同的磁盘进行文件上传。例如,要使用 's3' 磁盘,可以将 disk 设置为 's3'

'disk' => 's3',

请记住在您的 config/filesystems.php 文件中正确配置所选磁盘,并在终端中运行 php artisan config:clear 清除配置缓存。

图像转换设置

Mediable 可以自动创建图像上传的 WebP 和 AVIF 版本。您可以使用以下环境变量来控制此行为

  • MEDIABLE_CREATE_WEBP:将此设置为 true 以创建每个图像上传的 WebP 版本,或将 false 设置为禁用此功能。默认情况下,此设置为 true

  • MEDIABLE_CREATE_AVIF:将此设置为 true 以创建每个图像上传的 AVIF 版本,或将 false 设置为禁用此功能。默认情况下,此设置为 true

您还可以使用以下环境变量控制 WebP 和 AVIF 版本的质量

  • MEDIABLE_WEBP_QUALITY:将此设置为介于 0 和 100 之间的任何整数以控制 WebP 版本的质量。数字越高,质量越好,但文件大小也越大。默认情况下,此设置为 80。

  • MEDIABLE_AVIF_QUALITY:将该值设置为0到100之间的任何整数,以控制AVIF版本的画质。数字越大,画质越好,但文件大小也越大。默认情况下,此值设置为80。

以下是如何在.env文件中设置这些环境变量的示例

MEDIABLE_CREATE_WEBP=true 
MEDIABLE_CREATE_AVIF=true 
MEDIABLE_WEBP_QUALITY=80 
MEDIABLE_AVIF_QUALITY=80

贡献

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

许可证

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


                 _ _       _     _      
  /\/\   ___  __| (_) __ _| |__ | | ___ 
 /    \ / _ \/ _` | |/ _` | '_ \| |/ _ \
/ /\/\ \  __/ (_| | | (_| | |_) | |  __/
\/    \/\___|\__,_|_|\__,_|_.__/|_|\___|