jackillll/laravel-filament-client-upload-cos 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

jackillll/laravel-filament-client-upload-cos

最新稳定版本:1.2.1

Composer 安装命令:

composer require jackillll/laravel-filament-client-upload-cos

包简介

Laravel Filament extension for Tencent Cloud COS client-side upload

README 文档

README

一个为 Laravel Filament 提供腾讯云 COS 客户端直传功能的扩展包。

特性

  • 🚀 客户端直传到腾讯云 COS,减轻服务器负担
  • 🔒 安全的签名机制,保护您的密钥
  • 📱 支持进度显示和错误处理
  • 🎨 与 Filament 完美集成
  • ⚡ 简单易用的 API

安装

使用 Composer 安装扩展包:

composer require jackillll/laravel-filament-client-upload-cos

发布配置文件:

php artisan vendor:publish --tag="filament-cos-upload-config"

配置

.env 文件中添加腾讯云 COS 配置:

COS_SECRET_ID=your_secret_id
COS_SECRET_KEY=your_secret_key
COS_REGION=ap-beijing
COS_BUCKET=your_bucket_name
COS_DOMAIN=https://your_bucket_name.cos.ap-beijing.myqcloud.com
COS_UPLOAD_PATH=uploads/
COS_MAX_FILE_SIZE=10485760

使用方法

基本用法

在 Filament 表单中使用 COS 直传:

use Filament\Forms\Components\FileUpload;

FileUpload::make('avatar')
    ->cosUpload() // 启用 COS 直传
    ->acceptedFileTypes(['image/jpeg', 'image/png'])
    ->maxSize(5120); // 5MB

自定义上传路径

FileUpload::make('document')
    ->cosUpload('documents/') // 自定义上传路径
    ->acceptedFileTypes(['application/pdf']);

配置上传选项

FileUpload::make('image')
    ->cosUpload()
    ->cosUploadConfig([
        'max_file_size' => 2097152, // 2MB
        'allowed_extensions' => ['jpg', 'png', 'gif'],
    ]);

上传成功回调

FileUpload::make('file')
    ->cosUpload()
    ->cosUploadSuccess(function ($file) {
        // 处理上传成功后的逻辑
        Log::info('File uploaded successfully', ['file' => $file]);
    });

使用自定义组件

如果您需要更多控制,可以使用扩展包提供的自定义组件:

use YourVendor\FilamentCosUpload\Components\FileUpload;

FileUpload::make('attachment')
    ->cosUpload('attachments/')
    ->cosUploadSuccess(function ($file) {
        // 自定义处理逻辑
    });

配置选项

config/filament-cos-upload.php 中可以配置以下选项:

return [
    // 腾讯云 COS 配置
    'secret_id' => env('COS_SECRET_ID'),
    'secret_key' => env('COS_SECRET_KEY'),
    'region' => env('COS_REGION', 'ap-beijing'),
    'bucket' => env('COS_BUCKET'),
    'domain' => env('COS_DOMAIN'),

    // 上传配置
    'max_file_size' => env('COS_MAX_FILE_SIZE', 10485760), // 10MB
    'allowed_extensions' => ['jpg', 'jpeg', 'png', 'gif', 'pdf', 'doc', 'docx'],
    'upload_path' => env('COS_UPLOAD_PATH', 'uploads/'),

    // 安全配置
    'signature_expires' => 3600, // 1小时
    'callback_url' => env('COS_CALLBACK_URL'),
];

工作原理

  1. 用户选择文件后,前端 JavaScript 向服务器请求上传签名
  2. 服务器生成安全的上传签名并返回给前端
  3. 前端使用签名直接上传文件到腾讯云 COS
  4. 上传完成后,前端通知服务器更新文件信息

安全性

  • 使用临时签名,避免在前端暴露密钥
  • 支持文件类型和大小限制
  • 签名有时效性,防止滥用

要求

  • PHP 8.1+
  • Laravel 10.0+ 或 11.0+
  • Filament 3.0+

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

支持

如果您在使用过程中遇到问题,请:

  1. 查看文档和示例
  2. 搜索已有的 Issues
  3. 创建新的 Issue 并提供详细信息

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: JavaScript

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-09-18