function s3upload($file){
global $s3, $bucket, $finfo;
$result = $s3->putObject([
'Body' => $file->content,
'Bucket' => $bucket,
'Key' => "dir/subdir/{$file->name}",
'ContentType' => $mimeType ? $mimeType : $finfo->buffer($file->content),
'Metadata' => [
'fileId' => $file->Id,
'size' => $file->fileSize,
]
]);
return $result;
}
function s3copy($fileName){
global $s3, $bucket;
$fromKey = "ab/$fileName";
$toKey = "cd/$fileName";
$result = $s3->copy($bucket, $fromKey, $bucket, $toKey);
return $result;
}
function getFileListOfS3($prefix, $withMeta = false){
global $s3, $bucket;
try {
$result = $s3->listObjects([
'Bucket' => $bucket,
'Prefix' => $prefix
]);
$list = (array)$result->get('Contents');
if ($withMeta) {
foreach ($list as $key => $item) {
$list[$key]['Meta'] = getMetaOfS3($item['Key'])->get('Metadata');
}
}
return $list;//return an array, each item contains a key 'Key', value of which is like 'dir1/dir2/sample.jpeg'
} catch (S3Exception $e) {
throw new \Exception($e->getMessage());
}
}
function getMetaOfS3($key){
global $s3, $bucket;
try {
$result = $s3->headObject([
'Bucket' => $bucket,
'Key' => $key,
]);
return $result;
} catch(S3Exception $e) {
throw new \Exception($e->getMessage());
}
}