padsoft / laravel-uploadable
Laravel 包,用于使用特性自动处理上传
5.3.0
2024-06-21 16:09 UTC
Requires
- php: >=7.0.0
- illuminate/database: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- padosoft/support: ^1.6|^2.1|^3.0.4
Requires (Dev)
- mockery/mockery: ^0.9.9|^1.5
- orchestra/testbench: ^3.2|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- padosoft/test: ^0.2.2|^1.0.1|^2.1
- phpunit/phpunit: ^5.0|^6.0|^7.0|^8.0|^9.0|^10.0
README
此包提供了一个特性,当保存/更新/删除任何带有上传表单请求的 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)。请参阅 许可证文件 获取更多信息。