shawnl / s3
Laravel文件系统S3驱动适配器
v1.0.0
2025-12-08 06:20 UTC
Requires
- php: ^8.0
- aws/aws-sdk-php: ^3.0
- illuminate/filesystem: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
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()- 获取文件URLtemporaryUrl()- 获取临时URLfiles()- 列出目录内容directories()- 列出所有目录write()- 写入文件内容writeStream()- 写入文件流append()- 向文件末尾添加内容prepend()- 向文件开头添加内容putFileFromUrl()- 从URL上传文件allFiles()- 递归列出所有文件allDirectories()- 递归列出所有目录
许可证
MIT License