sabbir268/laravel-filecaster
Composer 安装命令:
composer require sabbir268/laravel-filecaster
包简介
A simple casting class for laravel model to handle file upload and retrieve
关键字:
README 文档
README
A simple file casting for laravel model to handle file upload and retrieve
Installation
composer require sabbir268/laravel-filecaster
Configuration
Cast Class Alias Add in aliases array (optional)
'aliases' => Facade::defaultAliases()->merge([ // ... 'filecast' => Sabbir268\LaravelFileCaster\FileCaster::class, // ... ])->toArray(),
Publish config file
php artisan vendor:publish --provider="Sabbir268\LaravelFileCaster\FileCasterServiceProvider"
Use from Model
Import FileCaster class
use Sabbir268\LaravelFileCaster\FileCaster;
Example: manage "image" file upload and retrieve
Let's assume, we have Blog model and there is a column image to store image file.
use App\Models; use Sabbir268\LaravelFileCaster\FileCaster; class Blog extends Model { // ... protected $casts = [ 'image' => FileCaster::class, ]; // ... }
Or, you can use filecast as alias of Sabbir268\LaravelFileCaster\FileCaster class.
use App\Models; class Blog extends Model { // ... protected $casts = [ 'image' => 'filecast', ]; // ... }
Now when you will create a new Blog model instance and has a file from request assign to image property, it will automatically upload the file to storage/app/public/{class_name}/{id} directory and store the file name with path in image column.
$blog = new Blog(); $blog->image = $request->file('image'); $blog->save();
And when you will retrieve the model instance, it will automatically retrieve the file path from image column and you can use it as like as a string.
$blog = Blog::find(1); echo $blog->image; // output: /storage/blog/1/image.jpg
There several methods/property you can use to retrieve the file information.
// get file name $blog->image->name; // output: image.jpg // get file extension $blog->image->extension; // output: jpg // get file size $blog->image->size; // output: 1024 // get image width $blog->image->width; // output: 200 // get image height $blog->image->height; // output: 200 // get file mime type $blog->image->mime; // output: image/jpeg // get file http url $blog->image->url; // output: http://example.com/storage/blog/1/image.jpg // get file full path $blog->image->path; // output: /var/www/html/storage/app/public/blog/1/image.jpg // get storage directory $blog->image->dir; // output: /var/www/html/storage/app/public/blog/1 // check if file exists $blog->image->exists; // output: true
If you want to get manipulated image url, you can use ur('WIDTHxHEIGHT') method.
$blog->image->url('200x200'); // output: http://example.com/storage/cache/200x200/blog-2-image1.jpg
Note: It will create a manipulated image in storage cache directory. You will need gd or imagick extension installed in your server.
If you want to delete the file, you can use remove() method.
$blog->image->remove(); // output: true
Contribution
You're open to create any pull request.
sabbir268/laravel-filecaster 适用场景与选型建议
sabbir268/laravel-filecaster 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 277 次下载、GitHub Stars 达 14, 最近一次更新时间为 2023 年 08 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「file」 「file-upload」 「file-casting」 「file-retrieve」 「file-upload-laravel」 「file-casting-laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 sabbir268/laravel-filecaster 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sabbir268/laravel-filecaster 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 sabbir268/laravel-filecaster 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The file manager intended for using Laravel with CKEditor / TinyMCE / Colorbox
Integrates the rekalogika/file library into the Symfony framework.
Upload files using Symfony Form, FilePond, and the rekalogika/file framework
A powerful chunked file upload field for Filament using Uppy.js with S3, remote sources (Google Drive, OneDrive, Dropbox), webcam, screen capture, audio recording, image editing and more.
Symfony bundle for automatic file upload handling on Doctrine ORM entities with S3, CDN, and multiple storage support
Laravel Media Popup to upload/view the files
统计信息
- 总下载量: 277
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 15
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-08-19