支持 Laravel 9 的 Aliyun OSS Storage 扩展

  • 支持 Laravel 9 的 Aliyun OSS Storage 扩展

项目地址

Gitee: gitee.com/shanyu/aliyun-oss-larave...
Github: github.com/alphasnow/aliyun-oss-la...

版本兼容

laravel aliyun-oss-laravel doc
>=5.5,<9.0 ^3.0 readme
>=9.0 ^4.0 readme

安装依赖

  1. 通过composer管理您的项目依赖,可以在你的项目根目录运行:

     $ composer require alphasnow/aliyun-oss-laravel

    然后通过composer install安装依赖。

  2. 修改环境配置 .env

     OSS_ACCESS_KEY_ID=<必填, 阿里云的AccessKeyId>
     OSS_ACCESS_KEY_SECRET=<必填, 阿里云的AccessKeySecret>
     OSS_BUCKET=<必填, 对象存储的Bucket>
     OSS_ENDPOINT=<必填, 对象存储的Endpoint>
  3. (可选) 修改文件配置 config/filesystems.php

     'default' => env('FILESYSTEM_DRIVER', 'oss'),
     // ...
     'disks'=>[
         // ...
         'oss' => [
                'driver'            => 'oss',
                'access_key_id'     => env('OSS_ACCESS_KEY_ID'),           // 必填, 阿里云的AccessKeyId
                'access_key_secret' => env('OSS_ACCESS_KEY_SECRET'),       // 必填, 阿里云的AccessKeySecret
                'bucket'            => env('OSS_BUCKET'),                  // 必填, 对象存储的Bucket, 示例: my-bucket
                'endpoint'          => env('OSS_ENDPOINT'),                // 必填, 对象存储的Endpoint, 示例: oss-cn-shanghai.aliyuncs.com
                'internal'          => env('OSS_INTERNAL', null),          // 选填, 内网上传地址, 示例: oss-cn-shanghai-internal.aliyuncs.com
                'domain'            => env('OSS_DOMAIN', null),            // 选填, 绑定域名, 示例: oss.my-domain.com
                'use_ssl'           => env('OSS_SSL', false),              // 选填, 是否使用HTTPS
                'prefix'            => env('OSS_PREFIX', ''),              // 选填, 统一存储地址前缀
                'reverse_proxy'     => env('OSS_REVERSE_PROXY', false),    // 选填, 域名是否使用NGINX代理绑定
         ],
         // ...
     ]

快速使用

use Illuminate\Support\Facades\Storage;
$storage = Storage::disk('oss');

写入

Storage::disk('oss')->putFile('dir/path', '/local/path/file.txt');
Storage::disk('oss')->putFileAs('dir/path', '/local/path/file.txt', 'file.txt');

Storage::disk('oss')->put('dir/path/file.txt', file_get_contents('/local/path/file.txt'));
$fp = fopen('/local/path/file.txt','r');
Storage::disk('oss')->put('dir/path/file.txt', $fp);
fclose($fp);

Storage::disk('oss')->prepend('dir/path/file.txt', 'Prepend Text'); 
Storage::disk('oss')->append('dir/path/file.txt', 'Append Text');

Storage::disk('oss')->put('dir/path/secret.txt', 'My secret', 'private');
Storage::disk('oss')->put('dir/path/download.txt', 'Download content', ["headers" => ["Content-Disposition" => "attachment; filename=file.txt"]]);

读取

Storage::disk('oss')->url('dir/path/file.txt');
Storage::disk('oss')->temporaryUrl('dir/path/file.txt', \Carbon\Carbon::now()->addMinutes(30));

Storage::disk('oss')->get('dir/path/file.txt'); 

Storage::disk('oss')->exists('dir/path/file.txt'); 
Storage::disk('oss')->size('dir/path/file.txt'); 
Storage::disk('oss')->lastModified('dir/path/file.txt');

删除

Storage::disk('oss')->delete('dir/path/file.txt');
Storage::disk('oss')->delete(['dir/path/file1.txt', 'dir/path/file2.txt']);

文件操作

Storage::disk('oss')->copy('dir/path/file.txt', 'dir/path/file_new.txt');
Storage::disk('oss')->move('dir/path/file.txt', 'dir/path/file_new.txt');
Storage::disk('oss')->rename('dir/path/file.txt', 'dir/path/file_new.txt');

文件夹操作

Storage::disk('oss')->makeDirectory('dir/path'); 
Storage::disk('oss')->deleteDirectory('dir/path');

Storage::disk('oss')->files('dir/path');
Storage::disk('oss')->allFiles('dir/path');

Storage::disk('oss')->directories('dir/path'); 
Storage::disk('oss')->allDirectories('dir/path'); 

使用宏扩展

# 追加上传分片数据
Storage::disk('oss')->appendObject('dir/path/news.txt', 'The first line paragraph.', 0);
Storage::disk('oss')->appendObject('dir/path/news.txt', 'The second line paragraph.', 25);
Storage::disk('oss')->appendObject('dir/path/news.txt', 'The last line paragraph.', 51);

# 追加上传分片文件
$position001 = Storage::disk('oss')->appendFile('dir/path/file.zip', 'dir/path/file.zip.001', 0);
$position002 = Storage::disk('oss')->appendFile('dir/path/file.zip', 'dir/path/file.zip.002', $position001);
$position003 = Storage::disk('oss')->appendFile('dir/path/file.zip', 'dir/path/file.zip.003', $position002);

文档

问题

如使用中遇到问题,提交 Issue

转载请告知
本帖已被设为精华帖!
本帖由系统于 2年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 17

出个支持腾讯云的 :heart_eyes:

2年前 评论
悠悠山雨 (楼主) 2年前
zhanghaidi

:+1: :kissing_heart:威武!正在找能支持9的呐!

2年前 评论

还是让前端来做这个吧

2年前 评论
悠悠山雨 (楼主) 2年前
zhanghaidi

楼主,分片上传有啥好的解决方案呀?

1年前 评论
悠悠山雨 (楼主) 1年前
zhanghaidi (作者) 1年前
悠悠山雨 (楼主) 1年前

使用这个扩展后,用Storage::disk(‘oss’)->putFile() 返回false 是什么情况,没报错 也不好排查

Laravel
一直报这个错误

9个月前 评论
悠悠山雨 (楼主) 9个月前
porygonCN

虽然 但是 过来挖个坟 COS和OSS早就支持了S3访问了 la自带的S3引擎将地址改到COS或者OSS的地址就可以了 两家都有对应的文档 七牛也可以的

7个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!