tinywan/storage
Composer 安装命令:
composer require tinywan/storage
包简介
webman storage plugin
README 文档
README
特性
| 云端 | 多文件上传 | Base64图片上传 | 服务器文件上传 |
|---|---|---|---|
| 🍏 私有云 | ✅ | -- | ✅ |
| 🍓 阿里云 | ✅ | ✅ | ✅ |
| 🍋 腾讯云 | ✅ | ✅ | ✅ |
| 🍇 七牛云 | ✅ | ✅ | ✅ |
| 🍇 亚马逊(S3) | ✅ | ✅ | ✅ |
安装
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异常
成功响应字段
| 字段 | 描述 | 示例值 |
|---|---|---|
| key | 上传文件key | webman |
| origin_name | 原始文件名 | 常用编程软件和工具.xlsx |
| save_name | 保存文件名 | 03414c9bdaf7a38148742c87b96b8167.xlsx |
| save_path | 文件保存路径(相对) | /var/www/webman-admin/runtime/storage/03414c9bdaf7a38148742c87b96b8167.xlsx |
| url | url访问路径 | /storage/03414c9bdaf7a38148742c87b96b8167.xlsx |
| unique_id | uniqid | 03414c9bdaf7a38148742c87b96b8167 |
| size | 文件大小 | 15050(字节) |
| mime_type | 文件类型 | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
| extension | 文件扩展名 | xlsx |
上传规则
默认情况下是上传到本地服务器,会在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
上传验证
支持使用验证类对上传文件的验证,包括文件大小、文件类型和后缀
| 字段 | 描述 | 示例值 |
|---|---|---|
| single_limit | 单个文件的大小限制,默认200M | 1024 * 1024 * 200 |
| total_limit | 所有文件的大小限制,默认200M | 1024 * 1024 * 200 |
| nums | 文件数量限制,默认10 | 10 |
| include | 被允许的文件类型列表 | ['xlsx','pdf'] |
| exclude | 不被允许的文件类型列表 | ['png','jpg'] |
支持上传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
tinywan/storage 适用场景与选型建议
tinywan/storage 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 21.32k 次下载、GitHub Stars 达 34, 最近一次更新时间为 2022 年 03 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 tinywan/storage 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tinywan/storage 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 21.32k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 35
- 点击次数: 7
- 依赖项目数: 21
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-03-11