roui/model-file-manager

一个用于处理模型级别文件存储的Laravel扩展包

v1.0.0 2024-09-21 22:41 UTC

This package is auto-updated.

Last update: 2024-09-21 22:44:31 UTC


README

介绍

ModelFileManager 扩展包是一个Laravel扩展包,旨在处理模型级别的文件存储。它提供了上传、删除和调整文件大小的功能。此外,它支持多个文件集合,并允许您轻松存储和管理文件,如图片、文档等。

需求

  • PHP: 8.3 或更高版本
  • Laravel: 8.x 或更高版本
  • Intervention Image: 2.x

安装

  1. 通过Composer安装此包

    composer require roui/model-file-manager
  2. 发布配置文件

    php artisan vendor:publish --tag=config
  3. 确保已安装 Intervention Image

    composer require intervention/image

配置

发布配置后,您可以在 config/modelfilemanager.php 中找到配置文件。您可以自定义以下设置:

  • storage_disk:默认存储磁盘。
  • resized_image_path:存储调整大小后的图片的路径。
  • default_collection:文件上传的默认集合名称。

config/modelfilemanager.php 的示例

<?php

return [
    'storage_disk' => env('MODEL_FILE_STORAGE_DISK', 'public'),
    'resized_image_path' => env('RESIZED_IMAGE_PATH', 'resized/{width}x{height}'),
    'default_collection' => env('DEFAULT_FILE_COLLECTION', 'default'),
];

用法

  1. 上传文件:您可以使用 uploadFile() 方法将文件上传到模型。如有需要,请指定文件、集合和磁盘。

    $user->uploadFile($file, 'profile_pictures');
  2. 删除文件:要删除特定集合中的文件,请使用 deleteFile() 方法。

    $user->deleteFile('path/to/file.jpg', 'profile_pictures');
  3. 获取文件:从模型的文件列中检索所有文件。

    $files = $user->getFiles();
  4. 从集合获取文件:获取特定集合中的文件,可选调整大小。

    $files = $user->getFilesFromCollection('profile_pictures', 300, 300);
  5. 替换文件:您可以在集合中将旧文件替换为新文件。

    $user->replaceFileInCollection($newFile, 'profile_pictures');
  6. 获取调整大小的图片:通过指定尺寸获取文件的调整大小版本。

    $resizedUrl = $user->getResizedImage('path/to/file.jpg', 300, 300);
  7. 自动将文件转换为数组:当访问时,'files' 属性会自动转换为数组。

    $files = $user->files; // Returns array of files

方法概述

  • uploadFile($file, $collection = null, $disk = null):将文件上传到集合和磁盘。
  • deleteFile($filePath, $collection = null, $disk = null):从集合和磁盘中删除文件。
  • getFiles():从模型中获取所有文件。
  • getFilesFromCollection($collection = null, $width = null, $height = null, $disk = null):从集合中获取文件,可选调整大小。
  • replaceFileInCollection($newFile, $collection = null, $disk = null):在集合中将旧文件替换为新文件。
  • getResizedImage($filePath, $width, $height, $disk = null):获取图像的调整大小版本。
  • getFirstFileFromCollection($collection = null, $width = null, $height = null, $disk = null):从集合中获取第一个文件。
  • getFilesAttribute($value):自动将 'files' 列转换为数组。

许可证

此包是开源软件,许可协议为 MIT 许可证