PHPackages                             xuey490/storage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. xuey490/storage

ActiveLibrary[File &amp; Storage](/categories/file-storage)

xuey490/storage
===============

novaframe storage lib

1.1.3(2mo ago)1191MITPHPPHP &gt;=8.1

Since Nov 16Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/xuey490/storage)[ Packagist](https://packagist.org/packages/xuey490/storage)[ RSS](/packages/xuey490-storage/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (5)Dependencies (14)Versions (6)Used By (1)

适配Symfony、FssPHP的多文件上传组件
========================

[](#适配symfonyfssphp的多文件上传组件)

特性
--

[](#特性)

云端多文件上传Base64图片上传服务器文件上传🍏 私有云✅✅✅🍓 阿里云✅✅✅🍋 腾讯云✅✅✅🍇 七牛云✅✅✅🍇 亚马逊（S3）✅✅✅### 改写： ，原版是结合workerman的

[](#改写httpsgithubcomtinywanwebman-storage-原版是结合workerman的)

安装
--

[](#安装)

```
composer require xuey490/storage
```

基本用法
----

[](#基本用法)

```
	// 传入当前 Request
	// 指定adapter 为local
	#$storage = \Framework\Storage\Storage::disk('local', true, $request);
	#$res = $storage->uploadFile();
	#var_dump(json_encode($res));

	//默认模式
	$res = \Framework\Storage\Storage::uploadFile();
	var_dump(json_encode($res));
```

### 上传成功信息

[](#上传成功信息)

```
[
    {
        "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上传文件keywebmanorigin\_name原始文件名常用编程软件和工具.xlsxsave\_name保存文件名03414c9bdaf7a38148742c87b96b8167.xlsxsave\_path文件保存路径（相对）/var/www/webman-admin/runtime/storage/03414c9bdaf7a38148742c87b96b8167.xlsxurlurl访问路径/storage/03414c9bdaf7a38148742c87b96b8167.xlsxunique\_iduniqid03414c9bdaf7a38148742c87b96b8167size文件大小15050（字节）mime\_type文件类型application/vnd.openxmlformats-officedocument.spreadsheetml.sheetextension文件扩展名xlsx上传规则
----

[](#上传规则)

默认情况下是上传到本地服务器，会在`runtime/storage`目录下面生成以当前日期为子目录，以文件流的sha1编码为文件名的文件，例如上面生成的文件名可能是：

```
runtime/storage/fd2d472da56c71a6da0a5251f5e1b586.png

```

如果你希望上传的文件是可以直接访问或者下载的话，可以使用`public`存储方式。

你可以在`config/storage.php`配置文件中配置上传根目录，例如：

```
'local' => [
    'adapter' => \Framework\Storage\Adapter\LocalAdapter::class,
    'root' => public_path() . '/storage',
],
```

> 浏览器访问：

上传验证
----

[](#上传验证)

支持使用验证类对上传文件的验证，包括文件大小、文件类型和后缀

字段描述示例值single\_limit单个文件的大小限制，默认200M1024 \* 1024 \* 200total\_limit所有文件的大小限制，默认200M1024 \* 1024 \* 200nums文件数量限制，默认1010include被允许的文件类型列表\['xlsx','pdf'\]exclude不被允许的文件类型列表\['png','jpg'\]支持上传SDK
-------

[](#支持上传sdk)

#### 阿里云对象存储

[](#阿里云对象存储)

```
composer require aliyuncs/oss-sdk-php
```

#### 腾讯云对象存储

[](#腾讯云对象存储)

```
composer require qcloud/cos-sdk-v5
```

#### 七牛云云对象存储

[](#七牛云云对象存储)

```
composer require qiniu/php-sdk
```

#### 亚马逊（S3）对象存储

[](#亚马逊s3对象存储)

```
composer require league/flysystem-aws-s3-v3
```

上传Base64图片
----------

[](#上传base64图片)

> **使用场景：** 前端直接截图（头像、Canvas等）一个Base64数据流的图片直接上传到云端

#### 请求参数

[](#请求参数)

```
{
    "extension": "png",
    "base64": "data:image/jpeg;base64,/9j/4AAQSkxxxxxxxxxxxxZJRgABvtyQBIr/MPTPTP/2Q=="
}
```

#### 请求案例（阿里云）

[](#请求案例阿里云)

```
public function upload(Request $request)
{
    $base64 = $request->post('base64');
    $response = \Framework\Storage\Storage::disk(\Framework\Storage\Storage::MODE_OSS, false)->uploadBase64($base64,'png');
    var_dump($response);
}
```

#### 响应参数

[](#响应参数)

```
{
	"save_path": "storage/20220402213639624851671439e.png",
	"url": "http://webman.oss.tinywan.com/storage/20220402213639624851671439e.png",
	"unique_id": "20220402213639624851671439e",
	"size": 11802,
	"extension": "png"
}
```

上传服务端文件
-------

[](#上传服务端文件)

> **使用场景：** 服务端导出文件需要上传到云端存储，或者零时下载文件存储。

#### 请求案例（阿里云）

[](#请求案例阿里云-1)

```
$serverFile = runtime_path() . DIRECTORY_SEPARATOR . 'storage/webman.png';
$res = \Framework\Storage\Storage::disk(\Framework\Storage\Storage::MODE_OSS, false)->uploadServerFile($serverFile);
```

#### 响应参数

[](#响应参数-1)

```
{
	"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
-----

[](#other)

### phpstan

[](#phpstan)

```
vendor/bin/phpstan analyse src

vendor/bin/php-cs-fixer fix src

```

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance88

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~30 days

Total

5

Last Release

60d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/830041f8bfd4d15e9a2693ed148d39ae3ca8ebb6a8a0eb8d1be7d97577f27fc0?d=identicon)[xuey490](/maintainers/xuey490)

---

Top Contributors

[![xuey490](https://avatars.githubusercontent.com/u/237189208?v=4)](https://github.com/xuey490 "xuey490 (18 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/xuey490-storage/health.svg)

```
[![Health](https://phpackages.com/badges/xuey490-storage/health.svg)](https://phpackages.com/packages/xuey490-storage)
```

###  Alternatives

[knplabs/gaufrette

PHP library that provides a filesystem abstraction layer

2.5k39.8M123](/packages/knplabs-gaufrette)[google/cloud-storage

Cloud Storage Client for PHP

34390.8M125](/packages/google-cloud-storage)[illuminate/filesystem

The Illuminate Filesystem package.

15261.6M2.6k](/packages/illuminate-filesystem)[superbalist/flysystem-google-storage

Flysystem adapter for Google Cloud Storage

26320.6M30](/packages/superbalist-flysystem-google-storage)[creocoder/yii2-flysystem

The flysystem extension for the Yii framework

2931.7M62](/packages/creocoder-yii2-flysystem)[flowjs/flow-php-server

PHP library for handling chunk uploads. Works with flow.js html5 file uploads.

2451.6M15](/packages/flowjs-flow-php-server)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
