又发新 Package 了~ 文件上传管理包
https://github.com/zgldh/laravel-upload-ma...
laravel-upload-manager
通过API对文件进行“上传、验证、储存、管理”操作。
Upload, validate, storage, manage by API for Laravel 5.1
依赖 Requirement
- Laravel 5.1
安装 Install
- composer require zgldh/laravel-upload-manager
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); } } }
配置 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
为你自己扩展的类即可。新功能思考中。。。
本帖已被设为精华帖!