?? 簡單多文件上傳插件

v1.1.1
版本
2025-02-11
版本更新時間
12809
安裝
29
star
簡介
簡單易用多文件上傳插件。目前支持以下多文件上傳 。
特性
云端 | 多文件上傳 | Base64圖片上傳 | 服務器文件上傳 |
---|---|---|---|
?? 私有云 | ? | -- | ? |
?? 阿里云 | ? | ? | ? |
?? 騰訊云 | ? | ? | ? |
?? 七牛云 | ? | ? | ? |
?? 亞馬遜(S3) | ? | ? | ? |
安裝
composer require tinywan/storage
基本用法
use Tinywan\Storage\Storage;
$res = 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"
}
...
]
字段描述
字段 | 描述 | 示例值 |
---|---|---|
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(字節(jié)) |
mime_type | 文件類型 | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
extension | 文件擴展名 | xlsx |
失敗,拋出
StorageAdapterException
異常
上傳規(guī)則
默認情況下是上傳到本地服務器,會在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 | 文件數(shù)量限制,默認10 | 10 |
include | 被允許的文件類型列表 | ['xlsx','pdf'] |
exclude | 不被允許的文件類型列表 | ['png','jpg'] |
支持上傳SDK
1. 阿里云對象存儲
composer require aliyuncs/oss-sdk-php
2. 騰訊云對象存儲
composer require qcloud/cos-sdk-v5
3. 七牛云云對象存儲
composer require qiniu/php-sdk
4. 亞馬遜(S3)對象存儲
composer require league/flysystem-aws-s3-v3
Base64 圖片上傳
使用場景: 前端直接截圖(頭像、Canvas等)一個Base64數(shù)據(jù)流的圖片直接上傳到云端
請求參數(shù)
{
"extension": "png",
"base64": "data:image/jpeg;base64,/9j/4AAQSkxxxxxxxxxxxxZJRgABvtyQBIr/MPTPTP/2Q=="
}
請求案例(阿里云)
use Tinywan\Storage\Storage;
public function upload(Request $request)
{
$base64 = $request->post('base64');
$response = Storage::disk(Storage::MODE_OSS, false)->uploadBase64($base64,'png');
var_dump($response);
}
響應參數(shù)
{
"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"
}
服務端文件上傳
使用場景: 服務端導出文件需要上傳到云端存儲,或者零時下載文件存儲。
請求案例(阿里云)
use Tinywan\Storage\Storage;
$serverFile = runtime_path() . DIRECTORY_SEPARATOR . 'storage/webman.png';
$res = Storage::disk(Storage::MODE_OSS, false)->uploadServerFile($serverFile);
響應參數(shù)
{
"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"
}