iiDestiny / laravel-filesystem-oss by iidestiny

Oss storage filesystem for Laravel.
390,230
350
9
Package Data
Maintainer Username: iidestiny
Maintainer Contact: iidestiny@vip.qq.com (iidestiny)
Package Create Date: 2018-12-29
Package Last Update: 2024-04-30
Language: PHP
License: MIT
Last Refreshed: 2024-11-26 15:18:48
Package Statistics
Total Downloads: 390,230
Monthly Downloads: 10,595
Daily Downloads: 535
Total Stars: 350
Total Watchers: 9
Total Forks: 44
Total Open Issues: 9

Requirement

  • PHP >= 7.0

Installing

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

Configuration

  1. After installing the library, register the Iidestiny\LaravelFilesystemOss\OssStorageServiceProvider::class in your config/app.php file:
'providers' => [
    // Other service providers...
    Iidestiny\LaravelFilesystemOss\OssStorageServiceProvider::class,
],

Laravel 5.5+ skip

  1. Add a new disk to your config/filesystems.php config:
<?php

return [
   'disks' => [
        //...
        'oss' => [
            'driver' => 'oss',
            'root' => '',
            'access_key' => env('OSS_ACCESS_KEY'),
            'secret_key' => env('OSS_SECRET_KEY'),
            'endpoint'   => env('OSS_ENDPOINT'), // 使用 ssl 这里设置如: https://oss-cn-beijing.aliyuncs.com
            'bucket'     => env('OSS_BUCKET'),
            'isCName'    => env('OSS_IS_CNAME', false), // 如果 isCname 为 false,endpoint 应配置 oss 提供的域名如:`oss-cn-beijing.aliyuncs.com`,否则为自定义域名,,cname 或 cdn 请自行到阿里 oss 后台配置并绑定 bucket
        ],
        //...
    ]
];

Usage

<?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');

// file access period & file handle
$url = $disk->signUrl('cat.png', $timeout, ['x-oss-process' => 'image/circle,r_100']);

See more methods laravel-filesystem-doc

前端 web 直传配置

oss 直传有三种方式,当前扩展包使用的是最完整的 服务端签名直传并设置上传回调 方式,扩展包只生成前端页面上传所需的签名参数,前端上传实现可参考 官方文档中的实例 或自行搜索

$config = $disk->signatureConfig($prefix, $callBackUrl, $expire);

depend

reference

License

MIT