kingofcode/laravel-uploadable

Laravel Uploadable 特性:通过最小配置自动上传图片和文件

0.1.8 2020-04-01 23:28 UTC

This package is auto-updated.

Last update: 2024-09-13 23:19:01 UTC


README

Laravel Uploadable 特性:通过最小配置自动上传图片和文件。

介绍

此包可以帮助您轻松上传文件,只需数据库中的一个字段和一些模型类中的简单属性即可。默认配置下,该包可进行缩略图、中等和正常大小的图片上传。它也可以用于上传其他文件,如PDF等。

安装

composer require kingofcode/laravel-uploadable

此包包含 Intervention Image 以调整图片大小和管理图片。

对于小于5.8.10版本的Laravel,请使用0.1.7版本,因为0.1.8版本增加了模型复制功能,该功能仅支持Laravel > 5.8.10。

关于上传

此包使用 Laravel 文件存储 来管理文件。文件将存储在默认磁盘上。例如,如果您使用的是public磁盘,要访问图片或文件,您需要在项目中创建一个符号链接。

php artisan storage:link

然后,在 config/filesystems.php 中配置您的默认文件系统,将其指向public磁盘。

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

用法

要使用此包,请在您的模型中导入 Uploadable 特性。

use KingOfCode\Upload\Uploadable;

然后,在您的模型中配置图片和文件的上传字段。

class Product extends Model
{
    use Uploadable;

    protected $fillable = [
        'name',
        'type',
        // Avoid adding file fields in the fillable array, it can break the correct upload
    ];
    
    // Array of uploadable images. These fields need to be existent in your database table
    protected $uploadableImages = [
        'image',
        'perfil_image',
        'test_image'
    ];
    
    // Array of uploadable files. These fields need to be existent in your database table
    protected $uploadableFiles = [
        'pdf'
    ];

}

这就是全部!配置完成后,您可以从客户端发送与模型中每个文件字段同名的文件数据。该包将自动处理。

更改图片上传大小

图片的默认大小(宽度)如下:

  • 缩略图 - 100px
  • 中等 - 300px
  • 正常 - 图片宽度

您可以直接在 $uploadableImages 数组中修改这些值。接受的值包括: image_width 或指定像素数量的数字。

protected $uploadableImages = [
  'image' => ['thumb' => 150, 'medium' => 500, 'normal' => 700],
  'perfil_image' => ['thumb' => 120, 'medium' => 'image_width', normal => 2000],
  'test_image'
];

更改图片上传类型

默认情况下,此包保存 缩略图中等正常 图片。要禁用某些上传类型,请将此数组添加到您的模型中。

protected $imageResizeTypes = [
  'medium' => false,
  // ... You can disable medium and normal images upload too
];

设置上传文件夹名称

上传将在具有模型名称(复数形式)的特定文件夹中进行。例如,对于 Product 模型,图片将上传到 'images/products' 目录,其他文件将上传到 'files/products'。如果您想修改此目录,请将以下代码添加到您的模型中。

public $uploadFolderName = 'products'; // Name of your folder

在视图中获取文件路径等

要获取图片文件路径,您可以调用对象中的 getImagePath($imageField, $type)。例如:

$product = Product::find(1);

$normal_image = $product->getImagePath('image');
$thumb_image = $product->getImagePath('image', 'thumb');
$medium_perfil_image = $product->getImagePath('perfil_image', 'medium');

要获取简单的文件路径,请调用 getFilePath($fileField)

$product = Product::find(1);

$pdf = $product->getFilePath('pdf');

灵感

此包的基本结构灵感来源于 Laravel Auto Upload 包。

贡献

请随意评论、提交问题和发送PR。祝您使用愉快!!

许可证

MIT