Laravel文件系统S3驱动适配器

Maintainers

Details

gitee.com/lsz_mo/s3

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

pkg:composer/shawnl/s3

v1.0.0 2025-12-08 06:20 UTC

This package is auto-updated.

Last update: 2025-12-08 06:34:15 UTC


README

Laravel文件系统S3驱动适配器,支持Amazon S3和兼容S3协议的存储服务。

安装

使用Composer安装:

composer require shawnl/s3

配置

config/filesystems.php中添加S3磁盘配置:

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'url' => env('AWS_URL'),
    'endpoint' => env('AWS_ENDPOINT'),
    'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
    'throw' => false,
    'report' => false,
],

.env文件中添加配置:

AWS_DEFAULT_REGION=us-east-1
AWS_ACCESS_KEY_ID=your-s3-key
AWS_SECRET_ACCESS_KEY=your-s3-secret
AWS_BUCKET=your-s3-bucket
AWS_URL="https://your-s3-endpoint.com"
AWS_ENDPOINT=https://your-s3-endpoint.com
AWS_USE_PATH_STYLE_ENDPOINT=false

使用方法

基本使用

使用Laravel的Storage门面来操作S3存储:

use Illuminate\Support\Facades\Storage;

// 上传文件
Storage::disk('s3')->put('file.txt', 'Hello, S3!');

// 下载文件
$content = Storage::disk('s3')->get('file.txt');

// 检查文件是否存在
if (Storage::disk('s3')->exists('file.txt')) {
    // 文件存在
}

// 获取文件URL
$url = Storage::disk('s3')->url('file.txt');

// 获取临时URL(有效期1小时)
$temporaryUrl = Storage::disk('s3')->temporaryUrl(
    'file.txt',
    now()->addHour()
);

// 删除文件
Storage::disk('s3')->delete('file.txt');

上传文件流

// 从本地文件上传
Storage::disk('s3')->putFile('path', new File('/path/to/local/file'));

// 从URL上传
Storage::disk('s3')->putFileFromUrl('path/file.jpg', 'https://example.com/image.jpg');

文件可见性

// 设置文件可见性为公开
Storage::disk('s3')->setVisibility('file.txt', 'public');

// 获取文件可见性
$visibility = Storage::disk('s3')->getVisibility('file.txt');

列出文件和目录

// 列出指定目录下的文件
$files = Storage::disk('s3')->files('directory');

// 递归列出所有文件
$allFiles = Storage::disk('s3')->allFiles('directory');

// 列出指定目录下的目录
$directories = Storage::disk('s3')->directories('directory');

// 递归列出所有目录
$allDirectories = Storage::disk('s3')->allDirectories('directory');

支持的方法

该适配器实现了Laravel文件系统的所有方法,包括:

  • put() - 写入文件内容
  • putFile() - 写入文件流
  • putFileAs() - 从本地文件上传
  • get() - 读取文件内容
  • readStream() - 读取文件为流
  • delete() - 删除文件
  • deleteDirectory() - 删除目录
  • makeDirectory() - 创建目录
  • move() - 移动文件
  • copy() - 复制文件
  • exists() - 检查文件是否存在
  • directoryExists() - 检查目录是否存在
  • size() - 获取文件大小
  • lastModified() - 获取文件修改时间
  • mimeType() - 获取文件MIME类型
  • getVisibility() - 获取文件可见性
  • setVisibility() - 设置文件可见性
  • url() - 获取文件URL
  • temporaryUrl() - 获取临时URL
  • files() - 列出目录内容
  • directories() - 列出所有目录
  • write() - 写入文件内容
  • writeStream() - 写入文件流
  • append() - 向文件末尾添加内容
  • prepend() - 向文件开头添加内容
  • putFileFromUrl() - 从URL上传文件
  • allFiles() - 递归列出所有文件
  • allDirectories() - 递归列出所有目录

许可证

MIT License