stianscholtz/s3-direct-uploader

一个无界面的Laravel文件上传器,可以直接从客户端上传文件到s3。

0.0.2 2024-09-13 09:17 UTC

This package is auto-updated.

Last update: 2024-09-13 09:19:39 UTC


README

S3DirectUploader是一个无界面的Laravel包,旨在简化从客户端/浏览器直接上传文件到Amazon S3。请注意,用户需要自己构建文件输入,但不久的将来将提供配套组件。此包处理上传的文件,在您的数据库中创建相应的文件记录,并提供各种功能,如自动生成缩略图、图像缩放和缩放、MIME类型限制等。

功能

  • 从客户端/浏览器直接上传文件到Amazon S3。
  • 在数据库中创建文件记录。
  • Laravel自动发现支持。
  • S3DirectUploader外观。
  • 具有合理默认值的配置文件。
  • 方便的路由宏。
  • 自动生成缩略图(可禁用)。
  • 图像缩放和缩放选项。
  • MIME类型限制。
  • 文件大小限制。
  • 文件名前缀。
  • 通过config/filesystems.php配置可配置的磁盘。

安装

您可以通过Composer安装S3DirectUploader包。运行以下命令

composer require stianscholtz/s3-direct-uploader

该包将自动注册其服务提供者和外观。

配置

安装包后,您可以更新config/s3-direct-uploader.php配置文件,包括您的s3磁盘、文件模型、默认缩略图尺寸和其他设置。

php artisan vendor:publish --provider="Stianscholtz\S3DirectUploader\UploaderServiceProvider" --tag=config

数据库迁移

S3DirectUploader提供了一个迁移文件来在您的数据库中创建文件表。您不需要发布此迁移,只需运行以下命令即可,如果表不存在,则会创建表

php artisan migrate

使用

路由宏

您可以使用上传路由宏以提高便利性或作为Route::match(['get', 'post'])的替代方案。

Route::upload('/upload', [UploadController::class, 'upload'])->name('file.upload');

代替

Route::match(['get', 'post'], '/upload', [UploadController::class, 'upload'])->name('file.upload');

控制器

use S3DirectUploader;
use App\Models\Banner; // Assuming your model name is Banner

public function upload(Banner $banner): Model|array|File
{
    return S3DirectUploader::directory('directory/sub-directory/another-sub-directory')
        ->mimeType('application/pdf')
        ->mimeTypes('image/jpg', 'image/jpeg', 'image/png', 'image/webp')
        ->imagesOnly()
        ->scale(1200)
        ->resize(1200, 400)
        ->thumbnail(500, 500)
        ->thumbnail(false) // Disable thumbnail generation, if default dimesions are specified in config
        ->maxSize(15)
        ->unique(false)
        ->prefix('my-prefix-')
        ->disk('s3-public')// Use another s3 disk configured in config/filesystems.php
        ->after(function (File $file) use ($banner) {
            $banner->update(['file_id', $file->id]);
        })
        ->handle();
}

贡献

欢迎贡献!请随时提交拉取请求。

许可证

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