laravel 5.5 管理 oss

背景

网上很多文章都是写的 laravel 上传文件到 oss,如果管理已经上传到文件,没有对应的例子(可能也不需要吧)

配置

在app/filesystems.php中的disks里下添加:

php 复制代码
'disks' => [
    'oss' => [
        'driver'     => 'oss',
        'access_id'  => '',//Your Aliyun OSS AccessKeyId
        'access_key' => '',//Your Aliyun OSS AccessKeySecret
        'bucket'     => '',//OSS bucket name
        'endpoint'   => 'oss-cn-shenzhen.aliyuncs.com', //<the endpoint of OSS, E.g: oss-cn-hangzhou.aliyuncs.com | custom domain, E.g:img.abc.com> OSS 外网节点或自定义外部域名
        //'endpoint_internal' => '', //<internal endpoint [OSS内网节点] 如:oss-cn-shenzhen-internal.aliyuncs.com> v2.0.4 新增配置属性,如果为空,则默认使用 endpoint 配置(由于内网上传有点小问题未解决,请大家暂时不要使用内网节点上传,正在与阿里技术沟通中)
        //'cdnDomain'  => '', //<CDN domain, cdn域名> 如果isCName为true, getUrl会判断cdnDomain是否设定来决定返回的url,如果cdnDomain未设置,则使用endpoint来生成url,否则使用cdn
        'ssl'        => false, // true to use 'https://' and false to use 'http://'. default is false,
        'isCName'    => false, // 是否使用自定义域名,true: 则Storage.url()会使用自定义的cdn或域名生成文件url, false: 则使用外部节点生成url
        'debug'      => true,
    ],
],

依赖

  • "iidestiny/laravel-filesystem-oss": "^1.1",

修改第三方

  • vendor/iidestiny/flysystem-oss/src/OssAdapter.php
php 复制代码
/**
 * File list core method.
 *
 * @param string $dirname
 * @param bool   $recursive
 *
 * @return array
 *
 * @throws OssException
 */
public function listAll($dirname = '', $nextMarker = '', $maxkeys = 10)
{
    $result = [
        'objects' => [],
        'prefix' => [],
        'next' => '',
    ];
    $options = [
        'delimiter' => '/',
        'prefix' => $dirname,
        'max-keys' => $maxkeys,
        'marker' => $nextMarker,
    ];
    try {
        $listObjectInfo = $this->client->listObjects($this->bucket, $options);
    } catch (OssException $exception) {
        throw $exception;
    }
    $nextMarker = $listObjectInfo->getNextMarker();
    $objectList = $listObjectInfo->getObjectList();
    $prefixList = $listObjectInfo->getPrefixList();
    if (!empty($objectList)) {
        foreach ($objectList as $objectInfo) {
            $object['Prefix'] = $dirname;
            $object['Key'] = $objectInfo->getKey();
            $object['LastModified'] = $objectInfo->getLastModified();
            $object['eTag'] = $objectInfo->getETag();
            $object['Type'] = $objectInfo->getType();
            $object['Size'] = $objectInfo->getSize();
            $object['StorageClass'] = $objectInfo->getStorageClass();
            $result['objects'][] = $object;
        }
    } else {
        $result['objects'] = [];
    }
    if (!empty($prefixList)) {
        foreach ($prefixList as $prefixInfo) {
            $result['prefix'][] = $prefixInfo->getPrefix();
        }
    }
    $result['next'] = $nextMarker;
    return $result;
}

使用

php 复制代码
/**
 * 文件列表
 * https://help.aliyun.com/zh/oss/developer-reference/list-objects-6
 * http://www.idcbaby.com/43096/
 */
public function ossList(Request $request) {
    $disk = Storage::disk('oss');
    return $disk->getAdapter()->listAll($request->prefix ?: '', $request->next ?: '', $request->max ?: 10);
}
相关推荐
踢球的打工仔几秒前
PHP面向对象(7)
android·开发语言·php
4***v2144 小时前
详解 为什么 tcp 会出现 粘包 拆包 问题
网络·tcp/ip·php
vx_dmxq2114 小时前
【PHP考研互助系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·mysql·考研·微信小程序·小程序·php
X***E4634 小时前
PHP在电商中的订单处理
开发语言·php
vx_vxbs666 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
ヽ格式化11 小时前
一文读懂栈与堆:从生活例子到Golang/PHP内存管理实践
golang·php·生活
c***979812 小时前
PHP在内容管理中的模板引擎
开发语言·php
Q_Q51100828512 小时前
python+django/flask的情绪宣泄系统
spring boot·python·pycharm·django·flask·node.js·php
用户72278681234412 小时前
PHP Fiber 优雅协作式多任务
php
青茶36014 小时前
ThinkCMF是一个开源的内容管理框架
php·cms·thinkphp