热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

优雅的OssFlysystem扩展

先上链接如果觉得帮助了你,节省了你的时间记得 Star 哟.iidestiny/flysystem-ossiidestiny/laravel-filesystem-oss 「 laravel 用户直接

file

先上链接

如果觉得帮助了你,节省了你的时间记得 Star 哟.

  • iidestiny/flysystem-oss

  • iidestiny/laravel-filesystem-oss 「 laravel 用户直接用这个」

序言

大佬们小弟第一次发帖体谅体谅嘿嘿

之前用过很多 oss 扩展包但是暂时没有一个用的顺心的,一些扩展包配置太复杂,还有的扩展包不能集成 Laravel 文件驱动,对于喜欢优雅编码的同学可能不能忍受

最近闲下来看了一些优秀的开源项目,从中学到不少东西。然后决定自己也写一个 oss 扩展包.

要求


  • PHP >= 7.0

第一个扩展包:直接使用不依赖框架

1
$ composer require "iidestiny/flysystem-oss" -vvv


配置

1
2
3
4
5
6
7
8
9
10
11
12
13
use League\Flysystem\Filesystem;

use Iidestiny\Flysystem\Oss\OssAdapter;

use Iidestiny\Flysystem\Oss\Plugins\FileUrl;



$accessKeyId = 'xxxxxx';

$accessKeySecret = 'xxxxxx';

$endpoint= 'oss.iidestiny.com';

$bucket = 'bucket';

$isCName = true; // 如果 isCname 为 false,endpoint 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket



$adapter = new OssAdapter($accessKeyId, $accessKeySecret, $endpoint, $bucket, $isCName);



$flysystem = new Filesystem($adapter);


API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
bool $flysystem->write('file.md', 'contents');



bool $flysystem->write('file.md', 'http://httpbin.org/robots.txt', ['options' => ['xxxxx' => 'application/redirect302']]);



bool $flysystem->writeStream('file.md', fopen('path/to/your/local/file.jpg', 'r'));



bool $flysystem->update('file.md', 'new contents');



bool $flysystem->updateStream('file.md', fopen('path/to/your/local/file.jpg', 'r'));



bool $flysystem->rename('foo.md', 'bar.md');



bool $flysystem->copy('foo.md', 'foo2.md');



bool $flysystem->delete('file.md');



bool $flysystem->has('file.md');



string|false $flysystem->read('file.md');



array $flysystem->listContents();



array $flysystem->getMetadata('file.md');



int $flysystem->getSize('file.md');



string $flysystem->getAdapter()->getUrl('file.md');



string $flysystem->getMimetype('file.md');



int $flysystem->getTimestamp('file.md');


Plugins

1
2
3
4
5
use Iidestiny\Flysystem\Oss\Plugins\FileUrl



$flysystem->addPlugin(new FileUrl());



string $flysystem->getUrl('file.md');


第二个扩展包:专门为 Laravel 适配

该扩展包内部自动依赖了

1
iidestiny/flysystem-oss

所以两个包不需要重复安装,Laravel 用户直接使用下面这条语句安装就可以.

1
$ composer require "iidestiny/laravel-filesystem-oss" -vvv


配置

1
config/filesystems.php

添加 oss 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16



return [

   'disks' => [

        //...

        'oss' => [

            'driver' => 'oss',

            'access_key' => env('OSS_ACCESS_KEY'),

            'secret_key' => env('OSS_SECRET_KEY'),

            'endpoint'   => env('OSS_ENDPOINT'),

            'bucket'     => env('OSS_BUCKET'),

            'isCName'    => env('OSS_IS_CNAME', false), // 如果 isCname 为 false,endpoint 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket

        ],

        //...

    ]

];


使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25



$disk = Storage::disk('oss');



// create a file

$disk->put('avatars/filename.jpg', $fileContents);



// check if a file exists

$exists = $disk->has('file.jpg');



// get timestamp

$time = $disk->lastModified('file1.jpg');

$time = $disk->getTimestamp('file1.jpg');



// copy a file

$disk->copy('old/file1.jpg', 'new/file1.jpg');



// move a file

$disk->move('old/file1.jpg', 'new/file1.jpg');



// get file contents

$cOntents= $disk->read('folder/my_file.txt');



// get file url

$url = $disk->getUrl('folder/my_file.txt');

更多方法查看 Laravel 文档 laravel-filesystem-doc

扩展包开发参考


  • overtrue/flysystem-qiniu

flysystem 是不是用了感觉会飞的意思 /手动滑稽


推荐阅读
author-avatar
爱啊诗的孩子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有