{"id":19832942,"url":"https://github.com/tinywan/webman-storage","last_synced_at":"2025-04-07T10:21:29.704Z","repository":{"id":37670753,"uuid":"468841757","full_name":"Tinywan/webman-storage","owner":"Tinywan","description":"the simple more file upload library for webman plugin","archived":false,"fork":false,"pushed_at":"2025-02-11T02:57:29.000Z","size":76,"stargazers_count":29,"open_issues_count":4,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T12:59:01.534Z","etag":null,"topics":["oss","php-library","tinywan","upload","upload-file","webman","workerman"],"latest_commit_sha":null,"homepage":"https://www.workerman.net/plugin/21","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tinywan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-11T17:26:35.000Z","updated_at":"2025-03-20T22:07:25.000Z","dependencies_parsed_at":"2024-06-21T16:33:46.941Z","dependency_job_id":"08be79b4-ff72-44cf-86bb-17a8dad5f09a","html_url":"https://github.com/Tinywan/webman-storage","commit_stats":{"total_commits":55,"total_committers":3,"mean_commits":"18.333333333333332","dds":"0.18181818181818177","last_synced_commit":"2b47bac199dfe2c1352a16da645b7723631d9a56"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinywan%2Fwebman-storage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinywan%2Fwebman-storage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinywan%2Fwebman-storage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinywan%2Fwebman-storage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tinywan","download_url":"https://codeload.github.com/Tinywan/webman-storage/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247631833,"owners_count":20970069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["oss","php-library","tinywan","upload","upload-file","webman","workerman"],"created_at":"2024-11-12T11:39:04.399Z","updated_at":"2025-04-07T10:21:29.669Z","avatar_url":"https://github.com/Tinywan.png","language":"PHP","readme":"# webman 简单易用多文件上传插件\n\n[![Latest Stable Version](http://poser.pugx.org/tinywan/storage/v)](https://packagist.org/packages/tinywan/storage) [![Total Downloads](http://poser.pugx.org/tinywan/storage/downloads)](https://packagist.org/packages/tinywan/storage) \n[![Daily Downloads](http://poser.pugx.org/tinywan/storage/d/daily)](https://packagist.org/packages/tinywan/storage)\n[![Latest Unstable Version](http://poser.pugx.org/tinywan/storage/v/unstable)](https://packagist.org/packages/tinywan/storage) \n[![License](http://poser.pugx.org/tinywan/storage/license)](https://packagist.org/packages/tinywan/storage) \n[![PHP Version Require](http://poser.pugx.org/tinywan/storage/require/php)](https://packagist.org/packages/tinywan/storage)\n[![last-commit](https://img.shields.io/github/last-commit/tinywan/storage/main)]()\n[![storage tag](https://img.shields.io/github/v/tag/tinywan/storage?color=ff69b4)]()\n\n## 特性\n\n| 云端         | 多文件上传 | Base64图片上传 | 服务器文件上传 |\n|------------| --- | --- | --- |\n| 🍏 私有云     | ✅ |  --  | ✅ |\n| 🍓 阿里云     | ✅ | ✅| ✅|\n| 🍋 腾讯云     | ✅ | ✅| ✅|\n| 🍇 七牛云     | ✅ | ✅| ✅|\n| 🍇 亚马逊（S3） | ✅ | ✅| ✅|\n\n## 安装\n\n```php\ncomposer require tinywan/storage\n```\n\n## 基本用法\n\n```php\n$res = Tinywan\\Storage\\Storage::uploadFile();\nvar_dump(json_encode($res));\n```\n\u003e ~~`v1.0.0` 版本之后不需要调用此方法`Tinywan\\Storage\\Storage::config()` 初始化，会自动初始化，默认为配置文件`app.php`默认配置`default`配置上传适配器。~~\n\n### 上传成功信息\n```json\n[\n    {\n        \"key\": \"webman\",\n        \"origin_name\": \"常用编程软件和工具.xlsx\",\n        \"save_name\": \"03414c9bdaf7a38148742c87b96b8167.xlsx\",\n        \"save_path\": \"runtime/storage/03414c9bdaf7a38148742c87b96b8167.xlsx\",\n        \"save_path\": \"/var/www/webman-admin/public/storage/03414c9bdaf7a38148742c87b96b8167.xlsx\",\n        \"url\": \"/storage/fd2d472da56c71a6da0a5251f5e1b586.png\",\n        \"uniqid \": \"03414c9bdaf7a38148742c87b96b8167\",\n        \"size\": 15050,\n        \"mime_type\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n        \"extension\": \"xlsx\"\n    }\n    ...\n]\n```\n\u003e 失败，抛出`StorageAdapterException`异常\n### 成功响应字段\n\n| 字段|描述|示例值|\n|:---|:---|:---|\n|key | 上传文件key | webman |\n|origin_name |原始文件名 | 常用编程软件和工具.xlsx |\n|save_name |保存文件名 | 03414c9bdaf7a38148742c87b96b8167.xlsx |\n|save_path|文件保存路径（相对） | /var/www/webman-admin/runtime/storage/03414c9bdaf7a38148742c87b96b8167.xlsx|\n|url |url访问路径 | /storage/03414c9bdaf7a38148742c87b96b8167.xlsx|\n|unique_id|uniqid | 03414c9bdaf7a38148742c87b96b8167|\n|size |文件大小 | 15050（字节）|\n|mime_type |文件类型 | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|\n|extension |文件扩展名 | xlsx|\n## 上传规则\n\n默认情况下是上传到本地服务器，会在`runtime/storage`目录下面生成以当前日期为子目录，以文件流的sha1编码为文件名的文件，例如上面生成的文件名可能是：\n```\nruntime/storage/fd2d472da56c71a6da0a5251f5e1b586.png\n```\n如果你希望上传的文件是可以直接访问或者下载的话，可以使用`public`存储方式。\n\n你可以在`config/plugin/tinywan/storage/app.php`配置文件中配置上传根目录，例如：\n\n```php\n'local' =\u003e [\n    'adapter' =\u003e \\Tinywan\\Storage\\Adapter\\LocalAdapter::class,\n    'root' =\u003e public_path() . '/storage',\n],\n```\n\u003e 浏览器访问：http://127.0.0.1:8787/storage/fd2d472da56c71a6da0a5251f5e1b586.png\n\n## 上传验证\n\n支持使用验证类对上传文件的验证，包括文件大小、文件类型和后缀\n\n| 字段|描述|示例值|\n|:---|:---|:---|\n|single_limit | 单个文件的大小限制，默认200M | 1024 * 1024 * 200 |\n|total_limit | 所有文件的大小限制，默认200M | 1024 * 1024 * 200 |\n|nums | 文件数量限制，默认10 | 10 |\n|include | 被允许的文件类型列表 | ['xlsx','pdf'] |\n|exclude | 不被允许的文件类型列表 | ['png','jpg'] |\n\n## 支持上传SDK\n\n#### 阿里云对象存储\n\n```php\ncomposer require aliyuncs/oss-sdk-php\n```\n#### 腾讯云对象存储\n\n```php\ncomposer require qcloud/cos-sdk-v5\n```\n\n#### 七牛云云对象存储\n\n```php\ncomposer require qiniu/php-sdk\n```\n\n#### 亚马逊（S3）对象存储\n\n```php\ncomposer require league/flysystem-aws-s3-v3\n```\n\n## 上传Base64图片\n\n\u003e**使用场景：** 前端直接截图（头像、Canvas等）一个Base64数据流的图片直接上传到云端\n\n#### 请求参数\n\n```json\n{\n    \"extension\": \"png\",\n    \"base64\": \"data:image/jpeg;base64,/9j/4AAQSkxxxxxxxxxxxxZJRgABvtyQBIr/MPTPTP/2Q==\"\n}\n```\n#### 请求案例（阿里云）\n\n```php\npublic function upload(Request $request)\n{\n    $base64 = $request-\u003epost('base64');\n    $response = \\Tinywan\\Storage\\Storage::disk(\\Tinywan\\Storage\\Storage::MODE_OSS, false)-\u003euploadBase64($base64,'png');\n    var_dump($response);\n}\n```\n\u003e ~~`v1.0.0` 版本之后不需要调用此方法`Tinywan\\Storage\\Storage::config()` 初始化，会自动初始化，默认为配置文件`app.php`默认配置`default`配置上传适配器。~~\n\n#### 响应参数\n```json\n{\n\t\"save_path\": \"storage/20220402213639624851671439e.png\",\n\t\"url\": \"http://webman.oss.tinywan.com/storage/20220402213639624851671439e.png\",\n\t\"unique_id\": \"20220402213639624851671439e\",\n\t\"size\": 11802,\n\t\"extension\": \"png\"\n}\n```\n## 上传服务端文件\n\n\u003e**使用场景：** 服务端导出文件需要上传到云端存储，或者零时下载文件存储。\n\n#### 请求案例（阿里云）\n\n```php\n$serverFile = runtime_path() . DIRECTORY_SEPARATOR . 'storage/webman.png';\n$res = \\Tinywan\\Storage\\Storage::disk(\\Tinywan\\Storage\\Storage::MODE_OSS, false)-\u003euploadServerFile($serverFile);\n```\n\u003e ~~`v1.0.0` 版本之后不需要调用此方法`Tinywan\\Storage\\Storage::config()` 初始化，会自动初始化，默认为配置文件`app.php`默认配置`default`配置上传适配器。~~\n\n\n#### 响应参数\n\n```json\n{\n\t\"origin_name\": \"/var/www/webman-admin/runtime/storage/webman.png\",\n\t\"save_path\": \"storage/6edf04d7c26f020cf5e46e6457620220402213414.png\",\n\t\"url\": \"http://webman.oss.tinywan.com/storage/6ed9ffd54d0df57620220402213414.png\",\n\t\"unique_id\": \"6edf04d7c26f020cf5e46e6403213414\",\n\t\"size\": 3505604,\n\t\"extension\": \"png\"\n}\n```\n\n## Other\n\n### phpstan\n\n```phpregexp\nvendor/bin/phpstan analyse src\n\nvendor/bin/php-cs-fixer fix src\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinywan%2Fwebman-storage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinywan%2Fwebman-storage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinywan%2Fwebman-storage/lists"}