若是以为帮助了你,节省了你的时间记得 Star 哟.php
以前用过不少 oss 扩展包可是暂时没有一个用的顺心的,一些扩展包配置太复杂,还有的扩展包不能集成 Laravel 文件驱动,对于喜欢优雅编码的同窗可能不能忍受laravel
最近闲下来看了一些优秀的开源项目,从中学到很多东西。看了超哥的 overtrue/flysystem-qiniu 后决定本身也写一个 oss 扩展包.git
$ composer require "iidestiny/flysystem-oss" -vvv
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);
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');
use Iidestiny\Flysystem\Oss\Plugins\FileUrl $flysystem->addPlugin(new FileUrl()); string $flysystem->getUrl('file.md');
该扩展包内部自动依赖了 iidestiny/flysystem-oss
因此两个包不须要重复安装,Laravel 用户直接使用下面这条语句安装就能够.github
$ composer require "iidestiny/laravel-filesystem-oss" -vvv
在 config/filesystems.php
添加 oss 配置shell
<?php 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 ], //... ] ];
## 使用app
<?php $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-doccomposer