移动云eos使用S3修改文件访问权限
使用composer加载aws库
composer require aws/aws-sdk-php
require 'vendor/autoload.php';
use Aws\S3\S3Client;
$s3Client = new S3Client([
'endpoint' => '', // 例:http://eos-beijing-1.cmecloud.cn
'region' => 'beijing1', // 例:beijing-1 -> 就是beijing1
'credentials' => [
'key' => '',
'secret' => '',
],
'version' => 'latest',
'http' => ['verify' => false],
'use_path_style_endpoint' => true, // 必须启用路径式访问
]);
//第一种方式
// 列举文件
$result = $s3Client->listObjects([
'Bucket' => '桶名',
'Marker' => 'uploadfile/app/20250411/768987714887372800.jpg', // 开始的key,如果没有这个表示从头开始查询
'MaxKeys' => 1 // 查询条数
]);
// 修改某个文件夹下的文件
foreach ($result->toArray()['Contents'] as $content) {
$key = $content['Key'];
if (strpos($key, 'uploadfile/app/20250411') !== false) {
// 将 your-bucket-name 桶下对象 file-name 的权限设置为公共可读。
$result = $s3Client->putObjectAcl([
'Bucket' => '桶名',
'Key' => $key, // 例:hello.txt
'ACL' => 'public-read',
]);
}
}
// 第二种方式使用listObjectsV2(listObjects 是旧版接口,listObjectsV2 是 AWS 推荐的替代方案)
$objects = [];
$continuationToken = null;
do {
$response = $s3Client->listObjectsV2([
'Bucket' => 'jianguan-xinhualing',
'Prefix' => 'uploadfile/20250411', // 过滤
'ContinuationToken' => $continuationToken,
]);
// 合并当前页对象到总列表
$objects = array_merge($objects, $response['Contents']);
// 更新分页令牌
$continuationToken = $response['NextContinuationToken'] ?? null;
} while ($response['IsTruncated']);
foreach ($objects as $content) {
$key = $content['Key'];
if (strpos($key, 'uploadfile/app/20250411') !== false) {
// 将 your-bucket-name 桶下对象 file-name 的权限设置为公共可读。
$result = $s3Client->putObjectAcl([
'Bucket' => '桶名',
'Key' => $key, // 例:hello.txt
'ACL' => 'public-read',
]);
}
}
listObjectsV2
筛选参数:
Prefix
作用:限定返回对象的键名前缀,用于过滤特定目录或文件前缀。
示例:Prefix=‘uploadfile/20250411/’ 仅返回该目录下对象 。
Delimiter
作用:定义键名的分隔符(如 /),用于模拟目录层级结构,返回结果会包含 CommonPrefixes 字段列出子目录。
示例:Delimiter=‘/’ 可将 photos/2025/ 视为目录,返回其直接子对象和子目录 。
StartAfter
作用:指定从某个键名之后开始返回结果(按键名字典序升序排列)。
示例:StartAfter=‘10001’ 跳过键名小于等于 10001 的对象,从下一个键开始返回 。
分页参数
MaxKeys
作用:单次请求返回的最大对象数(默认 1000,最大 1000)。
示例:MaxKeys=500 单次返回 500 条数据 。
ContinuationToken
作用:分页令牌,当 IsTruncated=true 时,需用此令牌继续获取下一页数据。
示例:首次调用不传此参数,后续调用使用 NextContinuationToken 的值 。
其他参数:
FetchOwner
作用:是否返回对象所有者信息(默认 false,设为 true 会增加响应时间)。
示例:FetchOwner=true 包含 Owner 字段 。
EncodingType
作用:指定键名的编码方式(如 url),用于处理特殊字符。
示例:EncodingType=‘url’ 对键名进行 URL 编码 。
更多推荐


所有评论(0)