kingofcode / laravel-uploadable
Laravel Uploadable 特性:通过最小配置自动上传图片和文件
Requires
- intervention/image: ^2.3
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