[扩展推荐] Laravel ImageUp 图片上传辅助工具
Laravel ImageUp 是由 Mohd. Saqueib Ansari 开发的一个扩展包,它借助 Intervention Image 扩展包实现了 Laravel Eloquent 模型中图片的自动上传、调整大小以及剪裁。
要使用这个扩展包,你需要在 Eloquent 模型中加入一个 HasImageUploads
的 trait,并且定义该模型中所有需要在数据库中存储的图片字段。
下面示例中,在 User
中定义了两个图片字段,他们分别和数据库中的字段保持一致:
<?php
namespace App;
use QCod\ImageUp\HasImageUploads;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
use HasImageUploads;
// assuming `users` table has 'cover', 'avatar' columns
// mark all the columns as image fields
protected static $imageFields = [
'cover', 'avatar'
];
}
保存模型会自动上传这些图片,并且将他们的路径保存到数据库中。同时,已经存在的路径也会被更新,即使是清除旧的图片。
你可以对 $imageFields
进行很多配置,比如上传和调整尺寸等选项:
// all the images fields for model
protected static $imageFields = [
'avatar' => [
// width to resize image after upload
'width' => 200,
// height to resize image after upload
'height' => 100,
// set true to crop image with the given width/height and you can also pass arr [x,y] coordinate for crop.
'crop' => true,
// what disk you want to upload, default config('imageup.upload_disk')
'disk' => 'public',
// a folder path on the above disk, default config('imageup.upload_directory')
'path' => 'avatars',
// placeholder image if image field is empty
'placeholder' => '/images/avatar-placeholder.svg',
// validation rules when uploading image
'rules' => 'image|max:2000',
// override global auto upload setting coming from config('imageup.auto_upload_images')
'auto_upload' => false,
// if request file is don't have same name, default will be the field name
'file_input' => 'photo'
],
'cover' => [
//...
]
];
你也可以修改 HasImageUploads
的 trait来自定义上传图像字段
具体详细的方法和配置,请查看github readme.
如果需要自由的手动上传图片,可以使用uploadImage()
方法(请禁用模型上的自动上传):
$user = User::findOrFail($id);
$user->uploadImage(request()->file('cover'), 'cover');
安装方法:
composer require qcod/laravel-imageup
github:https://github.com/qcod/laravel-imageup
这里可以查看详细的安装方法和使用说明。
如果觉得对你有帮助,记得star!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
本帖已被设为精华帖!
使用默认的自动上传方式,发现图片并没有成功上传,有没有更具体的使用方式?