??oss/cos/qiniu/aws/本地文件存儲(chǔ)(便捷/批量上傳/base64上傳/海報(bào)-水印-壓縮上傳)

v2.0.1
版本
2025-04-01
版本更新時(shí)間
10760
安裝
26
star
- 如果覺得方便了你,給個(gè)小星星鼓勵(lì)一下吧
- 如果你遇到問題 可以給我發(fā)郵件 8988354@qq.com
- 基于webman/admin插件版已上線 http://www.wtbis.cn/app/view/filesystem
安裝
composer require shopwwi/webman-filesystem
使用方法
- 阿里云 OSS 適配器(php7.X)
composer require "iidestiny/flysystem-oss:^3"
- 阿里云 OSS 適配器(php8.X)
composer require "iidestiny/flysystem-oss:^4"
- S3 適配器
composer require "league/flysystem-aws-s3-v3:^3.0"
- 七牛云適配器(php7.X)
composer require "overtrue/flysystem-qiniu:^2.0"
- 七牛云適配器(php8.X)
composer require "overtrue/flysystem-qiniu:^3.0"
- 內(nèi)存適配器
composer require "league/flysystem-memory:^3.0"
- 騰訊云 COS 適配器(php7.x)
composer require "overtrue/flysystem-cos:^4.0"
- 騰訊云 COS 適配器(php8.x)
composer require "overtrue/flysystem-cos:^5.0"
使用
通過FilesystemFactory::get('local') 來調(diào)用不同的適配器
use Shopwwi\WebmanFilesystem\FilesystemFactory;
public function upload(Request $request)
{
$file = $request->file('file');
$filesystem = FilesystemFactory::get('local');
$stream = fopen($file->getRealPath(), 'r+');
$filesystem->writeStream(
'uploads/'.$file->getUploadName(),
$stream
);
fclose($stream);
// Write Files
$filesystem->write('path/to/file.txt', 'contents');
// Add local file
$stream = fopen('local/path/to/file.txt', 'r+');
$result = $filesystem->writeStream('path/to/file.txt', $stream);
if (is_resource($stream)) {
fclose($stream);
}
// Update Files
$filesystem->update('path/to/file.txt', 'new contents');
// Check if a file exists
$exists = $filesystem->has('path/to/file.txt');
// Read Files
$contents = $filesystem->read('path/to/file.txt');
// Delete Files
$filesystem->delete('path/to/file.txt');
// Rename Files
$filesystem->rename('filename.txt', 'newname.txt');
// Copy Files
$filesystem->copy('filename.txt', 'duplicate.txt');
// list the contents
$filesystem->listContents('path', false);
}
便捷式上傳
- 支持base64圖片上傳
- 支持設(shè)定重復(fù)文件上傳及文件覆蓋
- 支持指定文件名上傳及文件覆蓋
- 新增圖片處理器上傳 (附加于強(qiáng)大的海報(bào)生成/圖片壓縮/水印等)新增V3版本
-
修復(fù)文件后綴大小寫問題 統(tǒng)一小寫
use Shopwwi\WebmanFilesystem\Facade\Storage; public function upload(\support\Request $request){ // 適配器 local默認(rèn)是存儲(chǔ)在runtime目錄下 public默認(rèn)是存儲(chǔ)在public目錄下 // 可訪問的靜態(tài)文件建議public // 默認(rèn)適配器是local Storage::adapter('public'); //單文件上傳 $file = $request->file('file'); // 上傳第二參數(shù)默認(rèn)為true即允許相同文件的上傳 為false時(shí)將會(huì)覆蓋原文件 $result = Storage::upload($file,false); //單文件判斷 try { $result = Storage::adapter('public')->path('storage/upload/user')->size(1024*1024*5)->extYes(['image/jpeg','image/gif'])->extNo(['image/png'])->upload($file); }catch (\Exception $e){ $e->getMessage(); } //多文件上傳 $files = $request->file(); $result = Storage::uploads($files); try { //uploads 第二個(gè)參數(shù)為限制文件數(shù)量 比如設(shè)置為10 則只允許上傳10個(gè)文件 第三個(gè)參數(shù)為允許上傳總大小 則本列表中文件總大小不得超過設(shè)定 第四參數(shù)默認(rèn)為true即允許同文件上傳 false則為覆蓋同文件 $result = Storage::adapter('public')->path('storage/upload/user')->size(1024*1024*5)->extYes(['image/jpeg','image/gif'])->extNo(['image/png'])->uploads($files,10,1024*1024*100); }catch (\Exception $e){ $e->getMessage(); } // 指定文件名上傳(同文件將被覆蓋) try { $files = $request->file(); $fileName = 'storage/upload/user/1.png'; // 文件名中如此帶了路徑 則下面的path無效 未帶路徑1.png效果相等 $ext = true; // 文件尾綴是否替換 開啟后則$files上傳的任意圖片 都會(huì)轉(zhuǎn)換為$fileName尾綴(示例: .png),默認(rèn)false $result = Storage::adapter('public')->path('storage/upload/user')->size(1024*1024*5)->extYes(['image/jpeg','image/gif'])->extNo(['image/png'])->reUpload($file,$fileName,$ext); }catch (\Exception $e){ $e->getMessage(); } // base64圖片上傳 try { $files = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAHCCAYAAAB8GMlFAAAAAXNSR0IArs4c6QAAAARnQU1BAACx..."; $result = Storage::adapter('public')->path('storage/upload/user')->size(1024*1024*5)->extYes(['image/jpeg','image/gif'])->extNo(['image/png'])->base64Upload($files); }catch (\Exception $e){ $e->getMessage(); } // 強(qiáng)大的圖片處理 你甚至可以創(chuàng)建畫報(bào)直接保存 // 在使用前 請確保你安裝了 composer require intervention/image try { $files = $request->file(); $fileName = 'storage/upload/user/1.png'; // 文件名中如此帶了路徑 則下面的path無效 未帶路徑1.png效果相等 $ext = true; // 文件尾綴是否替換 開啟后則$files上傳的任意圖片 都會(huì)轉(zhuǎn)換為$fileName尾綴(示例: .png),默認(rèn)false $result = Storage::adapter('public')->path('storage/upload/user')->size(1024*1024*5)->extYes(['image/jpeg','image/gif'])->extNo(['image/png'])->processUpload($file,function ($image){ // 圖片大小更改 resize() $image->resize(100,50) // 在圖片上增加水印 insert() $image->insert('xxx/watermark.png','bottom-right',15,10) // 當(dāng)然你可以使用intervention/image 中的任何功能 最終都會(huì)上傳在你的storage庫中 return $image },$ext); }catch (\Exception $e){ $e->getMessage(); } //獲取文件外網(wǎng) $filesName = 'storage/a4bab140776e0c1d57cc316266e1ca05.png'; $fileUrl = Storage::url($filesName); //指定選定器外網(wǎng) $fileUrl = Storage::adapter('oss')->url($filesName); }
### 靜態(tài)方法(可單獨(dú)設(shè)定)
| 方法 | 描述 | 默認(rèn) |
|---------|---------------|--------------------|
| adapter | 選定器 | config中配置的default |
| size | 單文件大小 | config中配置的max_size |
| extYes | 允許上傳文件類型 | config中配置的ext_yes |
| extNo | 不允許上傳文件類型 | config中配置的ext_no |
| path | 文件存放路徑(非完整路徑) | storage |
### 響應(yīng)字段
| 字段 | 描述 | 示例值 |
|-------------|---------------|---------------------------------------------------------------|
| origin_name | 源文件名稱 | webman.png |
| file_name | 文件路徑及名稱 | storage/a4bab140776e0c1d57cc316266e1ca05.png |
| storage_key | 文件隨機(jī)key | a4bab140776e0c1d57cc316266e1ca05 |
| file_url | 文件訪問外網(wǎng) | //127.0.0.1:8787/storage/cab473e23b638c2ad2ad58115e28251c.png |
| size | 文件大小 | 22175 |
| mime_type | 文件類型 | image/jpeg |
| extension | 文件尾綴 | jpg |
| width | 圖片寬度(圖片類型才返回) | 206 |
| height | 圖片高度(圖片類型才返回) | 206 |