padsoft/laravel-uploadable

Laravel 包,用于使用特性自动处理上传

5.3.0 2024-06-21 16:09 UTC

README

Latest Version on Packagist Software License Build Status Quality Score Total Downloads

此包提供了一个特性,当保存/更新/删除任何带有上传表单请求的 Eloquent 模型时,将自动处理上传。

##要求

  • php: >=7.1
  • illuminate/database: ^5.7|^6.0|^7.0|^8.0|^9.0
  • illuminate/support: ^5.7|^6.0|^7.0|^8.0|^9.0
  • illuminate/http: ^5.7|^6.0|^7.0|^8.0|^9.0
  • padosoft/io: "^1.9",
  • padosoft/laravel-request: "^1.0|^2.0",
  • padosoft/support: "^1.6|^2.1|^3.0.4"

安装

您可以通过 composer 安装此包

$ composer require padosoft/laravel-uploadable

用法

您的 Eloquent 模型应使用 Padosoft\Uploadable\Uploadable 特性和 Padosoft\Uploadable\UploadOptions 类。

您可以在模型中定义 getUploadOptions() 方法。

以下是如何实现特性并实现 getUploadOptions() 的示例

<?php

namespace App;

use Padosoft\Uploadable\Uploadable;
use Padosoft\Uploadable\UploadOptions;
use Illuminate\Database\Eloquent\Model;

class YourEloquentModel extends Model
{
    use Uploadable;
    
 /**
     * Retrive a specifice UploadOptions for this model, or return default UploadOptions
     * @return UploadOptions
     */
    public function getUploadOptions() : UploadOptions
    {
        if($this->uploadOptions){
            return $this->uploadOptions;
        }

        $this->uploadOptions = UploadOptions::create()->getUploadOptionsDefault()
            ->setUploadBasePath(public_path('upload/' . $this->getTable()))
            ->setUploadsAttributes(['image', 'image_mobile']);

        return $this->uploadOptions;
    }
}

您可以使用以下方式指定上传属性

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setUploadsAttributes(['image', 'image_mobile']);
}

您可以为模型设置基本上传路径

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setUploadBasePath(public_path('upload/news'));
}

您可以为模型中的每个(或某些)上传属性设置不同的路径

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setUploadPaths(['image_mobile' => '/mobile' ]);
}

它支持通过指定的 MIME 类型列表进行验证,以接受文件

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setMimeType([
          'image/gif',
          'image/jpeg',
          'image/png',
            ]);
}

默认情况下,每个上传文件将被重命名为 'original_name_'.$model->id.'.original_ext',但您可以重新定义一个自定义函数来重命名文件

/**
 * Generate a new file name for uploaded file.
 * Return empty string if $uploadedFile is null.
 * @param \Illuminate\Http\UploadedFile $uploadedFile
 * @param String $uploadField
 * @return string
 */
public function generateNewUploadFileName(\Illuminate\Http\UploadedFile $uploadedFile, string $uploadField) : string 
{
    if($uploadField=='image'){
        return 'pippo.jpg';
    }else{
        return 'pippo_mobile.jpg';
    }
}

此类使用 Laravel 'local' 存储磁盘作为默认。您可以在模型中设置不同的磁盘

public function getUploadOptions() : UploadOptions
{
    return UploadOptions::create()
        ->setStorageDisk('ftp');
}

有关所有选项,请参阅 UploadOptions 类。

变更日志

请参阅 CHANGELOG 获取更多最近更改的信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTING 获取详细信息。

安全性

如果您发现任何安全相关的问题,请通过电子邮件而不是使用问题跟踪器。

致谢

关于 Padosoft

Padosoft (https://www.padosoft.com) 是一家位于意大利佛罗伦萨的软件公司。专注于电子商务和网站。

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 获取更多信息。