webman storage
v1.1.0 支持亚马逊(S3)对象存储
| 雲端 | 多文件上傳 | Base64圖片上傳 | 服務器文件上傳 |
|---|---|---|---|
| ? 私有云 | ✅ | -- | ✅ |
| ? 阿里雲 | ✅ | ✅ | ✅ |
| ? 騰訊雲 | ✅ | ✅ | ✅ |
| ? 七牛雲 | ✅ | ✅ | ✅ |
| ? 亞馬遜(S3) | ✅ | ✅ | ✅ |
composer require tinywan/storage $ res = Tinywan Storage Storage:: uploadFile ();
var_dump ( json_encode ( $ res ));
v1.0.0版本之後不需要調用此方法TinywanStorageStorage::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'] |
composer require aliyuncs/oss-sdk-phpcomposer require qcloud/cos-sdk-v5composer require qiniu/php-sdkcomposer require league/flysystem-aws-s3-v3使用場景:前端直接截圖(頭像、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版本之後不需要調用此方法TinywanStorageStorage::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版本之後不需要調用此方法TinywanStorageStorage::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 "
} vendor/bin/phpstan analyse src
vendor/bin/php-cs-fixer fix src