当前位置: 首页 > 后端技术 > PHP

优雅的OssFlysystem扩展

时间:2023-03-29 20:52:48 PHP

先去链接。如果您认为它对您有帮助并节省您的时间,请记住Star。iidestiny/flysystem-ossiidestiny/laravel-filesystem-oss《Laravel用户直接用这个》前言之前用过很多oss扩展包,但都没有用过还好有些扩展包配置太复杂,有些扩展软件包无法集成Laravel文件驱动程序。喜欢优雅编码的同学可能会受不了。看了朝歌的overtrue/flysystem-qiniu,决定自己写一个oss扩展包。RequirePHP>=7.0第一个扩展包:直接使用框架,不依赖$composerrequire"iidestiny/flysystem-oss"-vvv配置useLeague\Flysystem\Filesystem;useIidestiny\Flysystem\Oss\OssAdapter;useIidestiny\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=newOssAdapter($accessKeyId,$accessKeySecret,$endpoint,$bucket,$isCName);$flysystem=new文件系统($adapter);APIbool$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','新内容');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');PluginsuseIidestiny\Flysystem\Oss\Plugins\FileUrl$flysystem->addPlugin(newFileUrl());string$flysystem->getUrl('file.md');第二个扩展包:专门适配Laravel。扩展包自动依赖iidestiny/flysystem-oss,无需重复安装这两个包。Laravel用户可以直接使用如下语句安装只需安装它。$composerrequire"iidestiny/laravel-filesystem-oss"-vvv配置在config/filesystems.php中添加oss配置[//...'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,端点需要配置oss提供的域名,如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,cname或cdn,请到阿里oss后台配置绑定bucket],//...]];##使用put('avatars/filename.jpg',$fileContents);//检查文件是否存在$exists=$disk->has('file.jpg');//gettimestamp$time=$disk->lastModified('file1.jpg');$time=$disk->getTimestamp('file1.jpg');//复制一个文件$disk->copy('old/file1.jpg','new/file1.jpg');//移动文件$disk->move('old/file1.jpg','new/file1.jpg');//获取文件内容$contents=$disk->read('folder/my_file.txt');//getfileurl$url=$disk->getUrl('folder/my_file.txt');更多方法查看Laravel文档laravel-filesystem-doc