tinywan / storage
webman storage plugin
Installs: 9 182
Dependents: 14
Suggesters: 0
Security: 0
Stars: 27
Watchers: 2
Forks: 6
Open Issues: 3
Requires
- php: >=7.2
- workerman/webman-framework: ^1.2.1
Requires (Dev)
- aliyuncs/oss-sdk-php: ^2.4
- friendsofphp/php-cs-fixer: ^3.6
- league/flysystem-aws-s3-v3: ^1.0
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.5
- qcloud/cos-sdk-v5: ^2.5
- qiniu/php-sdk: ^7.4
- workerman/webman: ^1.0
README
特性
安装
composer require tinywan/storage
基本用法
$res = Tinywan\Storage\Storage::uploadFile(); var_dump(json_encode($res));
v1.0.0
版本之后不需要调用此方法Tinywan\Storage\Storage::config()
初始化,会自动初始化,默认为配置文件app.php
默认配置default
配置上传适配器。
上传成功信息
[ { "key": "webman", "origin_name": "常用编程软件和工具.xlsx", "save_name": "03414c9bdaf7a38148742c87b96b8167.xlsx", "save_path": "runtime/storage/03414c9bdaf7a38148742c87b96b8167.xlsx", "save_path": "/var/www/webman-admin/public/storage/03414c9bdaf7a38148742c87b96b8167.xlsx", "url": "/storage/fd2d472da56c71a6da0a5251f5e1b586.png", "uniqid ": "03414c9bdaf7a38148742c87b96b8167", "size": 15050, "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "extension": "xlsx" } ... ]
失败,抛出
StorageAdapterException
异常
成功响应字段
上传规则
默认情况下是上传到本地服务器,会在runtime/storage
目录下面生成以当前日期为子目录,以文件流的sha1编码为文件名的文件,例如上面生成的文件名可能是:
runtime/storage/fd2d472da56c71a6da0a5251f5e1b586.png
如果你希望上传的文件是可以直接访问或者下载的话,可以使用public
存储方式。
你可以在config/plugin/tinywan/storage/app.php
配置文件中配置上传根目录,例如:
'local' => [ 'adapter' => \Tinywan\Storage\Adapter\LocalAdapter::class, 'root' => public_path() . '/storage', ],
浏览器访问:http://127.0.0.1:8787/storage/fd2d472da56c71a6da0a5251f5e1b586.png
上传验证
支持使用验证类对上传文件的验证,包括文件大小、文件类型和后缀
支持上传SDK
阿里云对象存储
composer require aliyuncs/oss-sdk-php
腾讯云对象存储
composer require qcloud/cos-sdk-v5
七牛云云对象存储
composer require qiniu/php-sdk
亚马逊(S3)对象存储
composer require league/flysystem-aws-s3-v3
上传Base64图片
使用场景: 前端直接截图(头像、Canvas等)一个Base64数据流的图片直接上传到云端
请求参数
{ "extension": "png", "base64": "data:image/jpeg;base64,/9j/4AAQSkxxxxxxxxxxxxZJRgABvtyQBIr/MPTPTP/2Q==" }
请求案例(阿里云)
public function upload(Request $request) { $base64 = $request->post('base64'); $response = \Tinywan\Storage\Storage::disk(\Tinywan\Storage\Storage::MODE_OSS, false)->uploadBase64($base64,'png'); var_dump($response); }
v1.0.0
版本之后不需要调用此方法Tinywan\Storage\Storage::config()
初始化,会自动初始化,默认为配置文件app.php
默认配置default
配置上传适配器。
响应参数
{ "save_path": "storage/20220402213639624851671439e.png", "url": "http://webman.oss.tinywan.com/storage/20220402213639624851671439e.png", "unique_id": "20220402213639624851671439e", "size": 11802, "extension": "png" }
上传服务端文件
使用场景: 服务端导出文件需要上传到云端存储,或者零时下载文件存储。
请求案例(阿里云)
$serverFile = runtime_path() . DIRECTORY_SEPARATOR . 'storage/webman.png'; $res = \Tinywan\Storage\Storage::disk(\Tinywan\Storage\Storage::MODE_OSS, false)->uploadServerFile($serverFile);
v1.0.0
版本之后不需要调用此方法Tinywan\Storage\Storage::config()
初始化,会自动初始化,默认为配置文件app.php
默认配置default
配置上传适配器。
响应参数
{ "origin_name": "/var/www/webman-admin/runtime/storage/webman.png", "save_path": "storage/6edf04d7c26f020cf5e46e6457620220402213414.png", "url": "http://webman.oss.tinywan.com/storage/6ed9ffd54d0df57620220402213414.png", "unique_id": "6edf04d7c26f020cf5e46e6403213414", "size": 3505604, "extension": "png" }
Other
phpstan
vendor/bin/phpstan analyse src
vendor/bin/php-cs-fixer fix src