简框/aliyun-oss-laravel

为 Laravel 提供的阿里云对象存储服务

4.2.0 2022-03-10 06:25 UTC

README

英文 | 简体中文

阿里云OSS存储服务 for Laravel

阿里云对象存储服务 For Laravel

Latest Stable Version Total Downloads Build Status Code Coverage License FOSSA Status

本包是一个包装器,将 aliyun-oss-flysystem 作为一个可用的存储磁盘桥接到 Laravel。
如果需要客户端直接传输,使用 Web 服务器签名直接传输 OSS 扩展包 aliyun-oss-appserver

兼容性

安装

  1. 如果您使用 composer 管理项目依赖,请在项目的根目录中运行以下命令

    $ composer require alphasnow/aliyun-oss-laravel

    然后运行 composer install 安装依赖。

  2. 修改环境文件 .env

    OSS_ACCESS_KEY_ID=<Your aliyun accessKeyId, Required>
    OSS_ACCESS_KEY_SECRET=<Your aliyun accessKeySecret, Required>
    OSS_BUCKET=<Your oss bucket name, Required>
    OSS_ENDPOINT=<Your oss endpoint domain, Required>
    
    1. (可选) 修改配置文件 config/filesystems.php
      'default' => env('FILESYSTEM_DRIVER', 'oss'),
      // ...
      'disks'=>[
          // ...
          'oss' => [
              'driver'            => 'oss',
              'access_key_id'     => env('OSS_ACCESS_KEY_ID'),           // Required, YourAccessKeyId
              'access_key_secret' => env('OSS_ACCESS_KEY_SECRET'),       // Required, YourAccessKeySecret
              'bucket'            => env('OSS_BUCKET'),                  // Required, For example: my-bucket
              'endpoint'          => env('OSS_ENDPOINT'),                // Required, For example: oss-cn-shanghai.aliyuncs.com
              'internal'          => env('OSS_INTERNAL', null),          // Optional, For example: oss-cn-shanghai-internal.aliyuncs.com
              'domain'            => env('OSS_DOMAIN', null),            // Optional, For example: oss.my-domain.com
              'use_ssl'           => env('OSS_SSL', false),              // Optional, Whether to use HTTPS
              'prefix'            => env('OSS_PREFIX', ''),              // Optional, The prefix of the store path
              'reverse_proxy'     => env('OSS_REVERSE_PROXY', false),    // Optional, Nginx reverse proxy domain
          ],
          // ...
      ]
      

使用

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

文档

问题

提交问题

许可

MIT

FOSSA Status