资讯专栏INFORMATION COLUMN

优雅的 Oss Flysystem 扩展

Yumenokanata / 2787人阅读

摘要:先上链接如果觉得帮助了你,节省了你的时间记得哟用户直接用这个序言之前用过很多扩展包但是暂时没有一个用的顺心的,一些扩展包配置太复杂,还有的扩展包不能集成文件驱动,对于喜欢优雅编码的同学可能不能忍受最近闲下来看了一些优秀的开源项目,从中

先上链接

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

iidestiny/flysystem-oss

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

序言

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

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

要求

PHP >= 7.0

第一个扩展包:直接使用不依赖框架
$ composer require "iidestiny/flysystem-oss" -vvv
配置
use LeagueFlysystemFilesystem;
use IidestinyFlysystemOssOssAdapter;
use IidestinyFlysystemOssPluginsFileUrl;

$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
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
use IidestinyFlysystemOssPluginsFileUrl

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

string $flysystem->getUrl("file.md");
第二个扩展包:专门为 Laravel 适配

该扩展包内部自动依赖了 iidestiny/flysystem-oss 所以两个包不需要重复安装,Laravel 用户直接使用下面这条语句安装就可以.

$ composer require "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,endpoint 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket
        ],
        //...
    ]
];

## 使用

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29881.html

相关文章

  • Github 上 10 个最受欢迎 PHP 项目

    摘要:个最受欢迎的项目是一门开发项目的服务端脚本语言,但它也可以作为一门通用编程语言。在年创造出用于个人项目的开发。由项目组开发和维护,为项目提供完整的邮件发送功能。项目基于和研发的管理系统,由维护。 Github 10 个最受欢迎的 PHP 项目 PHP 是一门开发 Web 项目的服务端脚本语言,但它也可以作为一门通用编程语言。在 1944 年 Rasmus Lerdorf 创造出 PH...

    chuyao 评论0 收藏0
  • 下载量最高「50 」个 Laravel 扩展

    摘要:简介另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态该项目统计了目前下载量最高的个扩展包。记得哟相信下面这些扩展包会让你的编码更加高效。排名下载量排名包地址下载次数描述图片处理。 简介 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态 ———— @Summer 该项目统计了目前 pack...

    liaorio 评论0 收藏0
  • 关于七牛云正确使用姿势探索

    摘要:,在后续测试时遇到一个诡异,当文件过大时,任务脚本上传到七牛云失败。当我遇到大文件无法上传到七牛云时,断点调试到这里,发现返回的是。后来还真被我找到了,七牛云官方提供一个脚本工具。 业务场景 需求 我们项目有一个文件上传需求,需要从客户端上传到七牛云的对象存储和自己的应用服务器上。这里使用七牛云主要是实现下载分发。应用服务器需要留一份是因为后续需要做文件分析(并且是上传后需要立马分析出...

    3fuyu 评论0 收藏0
  • Laravel学习笔记之Filesystem源码解析(上)

    摘要:说明本文主要学习的模块的源码逻辑,把自己的一点点研究心得分享出来,希望对别人有所帮助。实际上,使用了的重载学习笔记之重载,通过魔术方法调用里的,而这个实际上就是,该中有方法,可以调用。 说明:本文主要学习Laravel的Filesystem模块的源码逻辑,把自己的一点点研究心得分享出来,希望对别人有所帮助。总的来说,Filesystem模块的源码也比较简单,Laravel的Illumi...

    AlphaGooo 评论0 收藏0
  • Laravel学习笔记之Filesystem-从Dropbox中下载文件到AWS S3

    摘要:说明本文主要讲述了的文件系统的小,逻辑不复杂,主要就是把上的一个文件下载到本地,和下载到中。写驱动由于没有驱动,需要自定义下在中写上名为的驱动同时在注册下该就行。执行命令后,显示上文件从上下载到上的文件该逻辑简单,但很好玩。 说明:本文主要讲述了Laravel的文件系统Filesystem的小Demo,逻辑不复杂,主要就是把Dropbox上的一个文件下载到本地local,和下载到AWS...

    tylin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<