zgldh/laravel-upload-manager
Composer 安装命令:
composer require zgldh/laravel-upload-manager
包简介
Upload, validate, storage, manage by API for Laravel 5/6/7/8/9
README 文档
README
通过API对文件进行“上传、验证、储存、管理”操作。 Upload, validate, storage, manage by API for Laravel 5/6/7/8/9
依赖 Requirement
-
Laravel >= 6.0
-
For Laravel 5, Please use
composer require zgldh/laravel-upload-manager 0.6
安装 Install
- composer require zgldh/laravel-upload-manager
config/app.php'providers' => [ 'zgldh\UploadManager\UploadManagerServiceProvider']- php artisan vendor:publish --provider="zgldh\UploadManager\UploadManagerServiceProvider"
- php artisan migrate
- Done
用法 Usage
-
上传一个文件 Upload and store a file.
use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function postUpload(Request $request) { $file = $request->file('avatar'); $manager = UploadManager::getInstance(); $upload = $manager->upload($file); $upload->save(); return $upload; } } -
从一个URL获取并保存文件 Fetch and store a file from a URL
use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function postUpload(Request $request) { $fileUrl = $request->input('url'); $manager = UploadManager::getInstance(); $upload = $manager->upload($fileUrl); $upload->save(); return $upload; } } -
更新一个上传对象 Update a upload object
use App\Upload; use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function postUpload(Request $request) { $uploadId = $request->input('id'); $file = $request->file('avatar'); $manager = UploadManager::getInstance(); $upload = Upload::find($uploadId); if($manager->update($upload, $file)) { $upload->save(); return $upload; } return ['result'=>false]; } } -
用从一个URL获取到的文件来更新一个上传对象 Update a upload object from a URL
use App\Upload; use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function postUpload(Request $request) { $uploadId = $request->input('id'); $fileUrl = $request->input('url'); $manager = UploadManager::getInstance(); $upload = Upload::find($uploadId); if($manager->update($upload, $fileUrl)) { $upload->save(); return $upload; } return ['result'=>false]; } } -
数据验证 Validation
use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function postUpload(Request $request) { $file = $request->file('avatar'); $manager = UploadManager::getInstance(); $upload = $manager->withValidator('image')->upload($file); //加上验证组 if($upload) { $upload->save(); return $upload; } else { $errorMessages = $manager->getErrors(); //得到所有错误信息 $errorMessage = $manager->getFirstErrorMessage(); //得到第一条错误信息 throw new \Exception($errorMessage); } } }
-
存到别的Disk里面
use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function postUpload(Request $request) { $file = $request->file('avatar'); $manager = UploadManager::getInstance(); $upload = $manager ->withValidator('image') ->withDisk('qiniu') // 储存到七牛磁盘里 ->upload($file); $upload->save(); return $upload; } }
-
上传前修改
$upload对象use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function postUpload(Request $request) { $file = $request->file('avatar'); $manager = UploadManager::getInstance(); $upload = $manager ->withValidator('image') ->withDisk('localhost') // 默认存到本地 ->upload($file, function($upload){ if($upload->size > 1024*1024) { $upload->disk = 'qiniu';// 超过1兆的文件都放到七牛里。 } return $upload; }); $upload->save(); return $upload; } }
-
删除某用户上传后,却一直没有使用的
avatar类型的$upload对象use zgldh\UploadManager\UploadManager; class UploadController extend Controller { public function clearUnUsed(Request $request) { $currentUser = $request->user(); $manager = UploadManager::getInstance(); $manager->removeUnUsedUploads($currentUser, 'avatar'); } }
配置 Configuration
-
config/upload.php请查看源文件注释
-
App\Upload可以在里面写自己喜欢的函数
-
UploadStrategy.php通常需要你亲自扩展一个出来。如:
<?php namespace App\Extensions; use zgldh\UploadManager\UploadStrategy as BaseUploadStrategy; use zgldh\UploadManager\UploadStrategyInterface; class UploadStrategy extends BaseUploadStrategy implements UploadStrategyInterface { /** * 生成储存的相对路径 * @param $filename * @return string */ public function makeStorePath($filename) { $path = 'i/' . $filename; return $path; } /** * 得到 disk localuploads 内上传的文件的URL * @param $path * @return string */ public function getLocaluploadsUrl($path) { $url = url('uploads/' . $path); return $url; } /** * 得到 disk qiniu 内上传的文件的URL * @param $path * @return string */ public function getQiniuUrl($path) { $url = 'http://' . trim(\Config::get('filesystems.disks.qiniu.domain'), '/') . '/' . trim($path, '/'); return $url; } }然后在
config/upload.php里面配置upload_strategy为你自己扩展的类即可。
待续
zgldh/laravel-upload-manager 适用场景与选型建议
zgldh/laravel-upload-manager 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.59k 次下载、GitHub Stars 达 77, 最近一次更新时间为 2015 年 07 月 28 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「api」 「storage」 「upload」 「manage」 「laravel」 「validate」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 zgldh/laravel-upload-manager 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 zgldh/laravel-upload-manager 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 zgldh/laravel-upload-manager 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A SDK for working with B2 cloud storage.
Small library to access Microsoft Windows Azure Blob Storage with a Service or a StreamWrapper.
The file manager intended for using Laravel with CKEditor / TinyMCE / Colorbox
A PSR-7 compatible library for making CRUD API endpoints
Laravel Media Popup to upload/view the files
The YADM migrations
统计信息
- 总下载量: 5.59k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 79
- 点击次数: 17
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-07-28